




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
}
Другой ответ абсолютно правильный, но я также хотел бы добавить, что, возможно, было бы неразумно проверять код ошибки вручную, код 200 - не единственный код, который означает успех.
Я бы рекомендовал использовать опцию libcurl CURLOPT_FAILONERROR, которая при активации заставит libcurl рассматривать статусы категорий 400 и 500 как сбой запроса и не будет возвращать CURLE_OK из выполнения.
В дополнение к этому, в зависимости от набора параметров, есть другие коды, не относящиеся к «серии 200», которые являются успешными, хотя и с пониманием того, что требуется дополнительная работа. Два из самых известных - это 301 и 302. Конечно, завиток может быть настроен для их автоматической обработки, но могут быть случаи, когда приложение может захотеть обработать их само. Одна из возможностей может заключаться в том, что https: // используется с аутентификацией клиента, и для цели результата 301/302 требуется совершенно новая цепочка сертификатов.
хороший вопрос. еще один может быть, как получить статусное сообщение .. :)