我正在实现一个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