和 libcurl 的 HTTP状态码?

在调用 curl _ easy _ Performance 之后,如何获得 HTTP状态码(例如200或500) ?

58061 次浏览

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
}

The other answer is absolutely correct, but I would also like to add that it might not be wise to check the error code by hand, the 200 code is not the only code that signifies success.

I'd recoment using the libcurl option CURLOPT_FAILONERROR that when activated will make libcurl consider 400 and 500 -category statuses a request failure and will not return CURLE_OK from perform.