Http код состояния с libcurl? - PullRequest
       30

Http код состояния с libcurl?

88 голосов
/ 14 ноября 2008

Как получить код состояния HTTP (например, 200 или 500) после вызова curl_easy_perform?

Ответы [ 2 ]

129 голосов
/ 14 ноября 2008

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
}
3 голосов
/ 12 февраля 2018

Другой ответ абсолютно верен, но я также хотел бы добавить, что, возможно, было бы неразумно проверять код ошибки вручную, код 200 - не единственный код, который означает успех.

Я бы порекомендовал использовать опцию libcurl CURLOPT_FAILONERROR , которая при активации заставит libcurl учитывать 400 и 500 -категорию, классифицирует ошибку запроса и не вернет CURLE_OK из выполнения.

...