在C++中處理POST請求的重定向可以通過使用C++的網絡庫來實現。一種常見的方法是使用C++的curl庫來發送POST請求并處理重定向。以下是一個簡單的示例代碼:
#include <iostream>
#include <curl/curl.h>
size_t write_callback(char* ptr, size_t size, size_t nmemb, std::string* data) {
data->append(ptr, size * nmemb);
return size * nmemb;
}
int main() {
CURL* curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/redirect");
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "param1=value1¶m2=value2");
std::string response_data;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response_data);
CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
std::cerr << "Failed to perform POST request: " << curl_easy_strerror(res) << std::endl;
} else {
long response_code;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
if (response_code == 301 || response_code == 302) {
char* redirect_url;
curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &redirect_url);
std::cout << "Redirected to: " << redirect_url << std::endl;
} else {
std::cout << "Response data: " << response_data << std::endl;
}
}
curl_easy_cleanup(curl);
}
return 0;
}
在上面的示例中,我們使用curl庫發送一個POST請求到http://example.com/redirect
,并處理重定向。如果服務器返回301或302狀態碼,則會打印重定向的URL。否則,將打印服務器響應的數據。
請注意,您需要在編譯時鏈接libcurl庫。希望這可以幫助您處理C++中的POST請求重定向。