我正在實現一個C程序,它需要從Content-Length
頭文件(當在響應頭文件中發送Content-Length
時)讀取遠程文件的大小。如何使用CURLOPT_HEADERFUNCTION讀取單個響應標題字段?
我已經看過libcurl的文檔,並且迄今爲止能夠提供的最好功能是CURLOPT_HEADERFUNCTION
設置的回調函數。我已經把一個回調,這是應該打印頭以STDOUT
的玩具實施:
size_t hdf(char* b, size_t size, size_t nitems, void *userdata) {
printf("%s", b);
return 0;
}
雖然我希望能夠打印Content-Length
頭(或者,至少,所有打印頭),我只能得到這個功能打印響應代碼:
$ ./curltest "some_url_which_sends_back_Content_Length"
HTTP/1.1 200 OK
如果我註釋掉我main
這臺回調上面定義的hdf
功能行,默認行爲是打印所有的頭到STDOUT
。
僅供參考,這裏是main
功能我使用的基礎上,libcurl的郵件列表上線:
int main(int argc, char *argv[])
{
CURLcode ret;
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_URL, argv[1]);
curl_easy_setopt(hnd, CURLOPT_HEADER, 1);
curl_easy_setopt(hnd, CURLOPT_NOBODY, 1);
curl_easy_setopt(hnd, CURLOPT_HEADERFUNCTION, hdf);
ret = curl_easy_perform(hnd);
curl_easy_cleanup(hnd);
}
我怎麼能寫的CURLOPT_HEADERFUNCTION
選項的回調,可以加載一個特定的頭進入內存或以其他方式操作 - 或者至少將所有頭文件加載到內存中?
噢,我必須更多關注文檔。感謝您的解釋! – Jules