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.
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ż 200kod 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 400i 500statusy kategorii -category zakończy się niepowodzeniem i nie wróci CURLE_OKz wykonywania.
Jako rozszerzenie tego, w zależności od ustawionych opcji, istnieją inne kody inne niż „seria 200”, które są sukcesem, aczkolwiek przy założeniu, że potrzeba więcej pracy. Dwa z najbardziej znanych to 301 i 302. Z pewnością zawijanie może być skonfigurowano je do obsługi automatycznej, ale mogą wystąpić przypadki, w których aplikacja może chcieć obsługiwać je sama. Jedną z możliwości może być sytuacja, gdy protokół https: // jest używany z uwierzytelnianiem klienta, a dla celu wyniku 301/302 potrzebny jest zupełnie nowy łańcuch certyfikatów.
Odpowiedzi:
http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
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 }
źródło
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
i500
statusy kategorii -category zakończy się niepowodzeniem i nie wróciCURLE_OK
z wykonywania.źródło