调用 curl_easy_perform 后如何获取 HTTP 状态码(例如 200 或 500)?
twk
问问题
53999 次
2 回答
146
http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
CURLINFO_RESPONSE_CODE 传递一个指向 long 的指针以接收最后收到的 HTTP 或 FTP 代码。这 选项在 libcurl 7.10.7 及更早版本中称为 CURLINFO_HTTP_CODE。这 如果没有收到服务器响应代码,则为零。请注意,一个 代理的 CONNECT 响应应该用 CURLINFO_HTTP_CONNECTCODE 读取 而不是这个。
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
}
于 2008-11-14T18:51:13.597 回答
11
另一个答案是绝对正确的,但我还要补充一点,手动检查错误代码可能不明智,200
代码并不是唯一表示成功的代码。
我建议使用 libcurl 选项CURLOPT_FAILONERROR,当它被激活时,将使 libcurl 考虑400
和500
-category 状态请求失败并且不会CURLE_OK
从执行返回。
于 2018-02-12T13:49:13.410 回答