我正在尝试使用libcurl在C++中从REST网页下载JSON文件。如果我进入网页,以下代码可以工作,但如果我尝试访问JSON,则无法下载。
我认为这应该是一个简单的修复,但我找不到任何参考资料...
如果我进入网页,它会打开JSON,但此代码仅返回text/html; charset=utf-8。
??????????
我认为这应该是一个简单的修复,但我找不到任何参考资料...
如果我进入网页,它会打开JSON,但此代码仅返回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);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
的调用,我认为第二个不必要。 - Ivaylo Strandjevcurl_slist_free(headers)
,所以这段代码存在头部列表泄漏的问题。 - Pete Kirkhamcurl_slist_append
调用没有添加任何内容:你忽略了返回值。 - emlai