Jak uzyskać kod statusu HTTP (np. 200 lub 500) po wywołaniu curl_easy_perform?
Odpowiedzi:
http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
CURLINFO_RESPONSE_CODE Przekaż wskaźnik do long, aby otrzymać ostatni odebrany kod HTTP lub FTP. To opcja była znana jako CURLINFO_HTTP_CODE w libcurl 7.10.7 i wcześniejszych. To będzie wynosić zero, jeśli nie otrzymano żadnego kodu odpowiedzi serwera. Zwróć uwagę, że plik Odpowiedź proxy CONNECT powinna być odczytywana z CURLINFO_HTTP_CONNECTCODE a nie to.
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
}
Druga odpowiedź jest jak najbardziej poprawna, ale chciałbym również dodać, że ręczne sprawdzanie kodu błędu może nie być rozsądne, ponieważ 200
kod nie jest jedynym kodem, który oznacza sukces.
Poleciłbym ponownie użyć opcji libcurl CURLOPT_FAILONERROR, która po aktywacji spowoduje, że libcurl rozważy 400
i 500
statusy kategorii -category zakończy się niepowodzeniem i nie wróci CURLE_OK
z wykonywania.