web-dev-qa-db-fra.com

Code d'état HTTP avec libcurl?

Comment puis-je obtenir le code d'état HTTP (par exemple 200 ou 500) après avoir appelé curl_easy_perform?

88
twk

http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html

 CURLINFO_RESPONSE_CODE 
 
 Passez un pointeur sur un long pour recevoir le dernier code HTTP ou FTP reçu. Cette option 
 Était connue sous le nom de CURLINFO_HTTP_CODE dans libcurl 7.10.7 et versions antérieures. Ce 
 Sera nul si aucun code de réponse du serveur n'a été reçu. Notez que la réponse CONNECT d'un proxy 
 Doit être lue avec CURLINFO_HTTP_CONNECTCODE 
 Et non pas ceci. 
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
}
131
Vinko Vrsalovic

L'autre réponse est absolument correcte, mais je voudrais également ajouter qu'il n'est peut-être pas judicieux de vérifier le code d'erreur à la main, le 200 le code n'est pas le seul code qui signifie le succès.

Je recommanderais d'utiliser l'option libcurl CURLOPT_FAILONERROR que lorsqu'il est activé, libcurl considérera 400 et 500 -category signale un échec de la demande et ne retournera pas CURLE_OK de performer.

3
kralyk