94 votes

Code de statut Http avec libcurl ?

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

7 votes

Bonne question. une autre pourrait être, comment obtenir un message d'état :)

142voto

Vinko Vrsalovic Points 116138

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
}

11voto

kralyk Points 805

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

Je recommande d'utiliser l'option libcurl. CURLOPT_FAILONERROR qui, lorsqu'elle est activée, fait que libcurl considère 400 y 500 -Le statut de cette catégorie est celui d'un échec de la demande et elle ne retournera pas la demande. CURLE_OK d'exécuter.

0 votes

Dans le prolongement de cela, en fonction des options définies, il existe d'autres codes qui ne font pas partie de la "série 200" et qui sont un succès, bien que l'on comprenne que plus de travail est nécessaire, deux des plus connus étant 301 et 302. Il est certain que curl peut être configuré pour les gérer automatiquement, mais il peut y avoir des cas où l'application peut vouloir les gérer elle-même. Une possibilité pourrait être lorsque https:// est utilisé avec l'authentification du client, et qu'une chaîne de certificats complètement nouvelle est nécessaire pour la cible du résultat 301 / 302.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X