Как мне получить код состояния HTTP (например, 200 или 500) после вызова curl_easy_perform?
Ответы:
http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
CURLINFO_RESPONSE_CODE Передайте указатель на long, чтобы получить последний полученный код HTTP или FTP. Этот опция была известна как CURLINFO_HTTP_CODE в libcurl 7.10.7 и ранее. Этот будет равно нулю, если код ответа сервера не был получен. Обратите внимание, что ответ 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
}
Другой ответ абсолютно правильный, но я также хотел бы добавить, что, возможно, нецелесообразно проверять код ошибки вручную, 200
код - не единственный код, который означает успех.
Я бы рекомендовал использовать опцию libcurl CURLOPT_FAILONERROR, которая при активации заставит libcurl рассматривать 400
и 500
-category статусы как сбой запроса и не будет возвращаться CURLE_OK
из выполнения.