c++ libcurl json reste
Je suis en train de télécharger un fichier json à partir d'un RESTE de la page web en C++ avec libcurl.
Le code suivant fonctionne si je vais à la page web, mais il ne marche pas télécharger si je veux accéder à la json ....
Je pense que cela devrait être une solution facile, mais je ne peux trouver aucune référence à cette ...
Si je vais à la page web, il ouvre le json, mais ce code ne renvoie text/html; charset=utf-8
??????????
CURL *curl;
CURLcode res;
struct curl_slist *headers=NULL; //init to NULL is important
headers = curl_slist_append(headers, "Accept: application/json");
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://web.com/api/json/123");
curl_easy_setopt(curl, CURLOPT_HTTPGET,1);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
//curl_easy_setopt(curl, CURLOPT_URL, "http://web.com/123.html");//this works!!!
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
char *ct;
/* ask for the content-type */
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
if((CURLE_OK == res) && ct)
printf("We received Content-Type: %s\n", ct);
}
}
/* always cleanup */
curl_easy_cleanup(curl);
OriginalL'auteur Philip | 2011-04-18
Vous devez vous connecter pour publier un commentaire.
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
je crois que le second n'est pas nécessaire.Aussi de mon expérience, il semble que vous devez affecter la valeur de retour de curl_slist_append retour à des en-têtes pour modifier la liste.
il vous manque un appel à
curl_slist_free(headers)
donc ce code fuites de la liste d'en-têteil vous manque _all. curl_slist_free_all(en-têtes);
Votre
curl_slist_append
appels ne sont pas en ajoutant quoi que ce soit: vous êtes ignorant la valeur de retour.OriginalL'auteur Philip
Je pense que cela a à voir avec la configuration sur le serveur HTTP. Tout d'abord, vous devez envoyer un certain type d'indication de ce type, vous êtes enceinte, par exemple, l'ajout d'un
Accept
en-tête comme ceci:Si vous ne spécifiez pas ce que vous attendez, le serveur peut renvoyer le code HTML par défaut dans l'en-tête de réponse
Content-Type
, et c'est ce quecurl
vous dit.OriginalL'auteur Diego Sevilla
Avez-vous essayé cette approche à partir du tutoriel de code à la curl site?
http://curl.haxx.se/libcurl/c/sepheaders.html
OriginalL'auteur holtavolt