如何在调用curl_easy_perform后获取HTTP状态代码(例如200或500)?
答案 0 :(得分:129)
http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
CURLINFO_RESPONSE_CODE Pass a pointer to a long to receive the last received HTTP or FTP code. This option was known as CURLINFO_HTTP_CODE in libcurl 7.10.7 and earlier. This will be zero if no server response code has been received. Note that a proxy's CONNECT response should be read with CURLINFO_HTTP_CONNECTCODE and not this.
curl_code = curl_easy_perform (session);
long http_code = 0;
curl_easy_getinfo (session, CURLINFO_RESPONSE_CODE, &http_code);
if (http_code == 200 && curl_code != CURLE_ABORTED_BY_CALLBACK)
{
//Succeeded
}
else
{
//Failed
}
答案 1 :(得分:3)
另一个答案是绝对正确的,但我还想补充说,手动检查错误代码可能不明智,200
代码不是唯一代表成功的代码。
我使用libcurl选项CURLOPT_FAILONERROR进行重新设置,激活时会使libcurl将400
和500
- 类别状态视为请求失败,并且不会返回{{1}来自表演。