【发布时间】:2011-12-02 09:36:01
【问题描述】:
我想在一些 C++ 代码中创建一个 cURL 请求,它可以让我在不下载文件的情况下获得服务器中文件的长度。为此,我使用一些 cURL 选项告诉我只需要请求响应中的标头,然后我检查响应以获取文件长度。
我正在设置以下请求选项:
curl_easy_setopt(_curl_handle, CURLOPT_HEADER, 1);
curl_easy_setopt(_curl_handle, CURLOPT_NOBODY, 1);
然后处理请求,等待响应,显示OK=200,最后查询文件长度:
curl_easy_getinfo(_curl_handle, CURLINFO_CONTENT_LENGTH_UPLOAD, &dResult);
但我得到的文件长度为-1。根据 cURL 文档,这意味着大小是未知的。 cURL怎么会没有从服务器获取文件长度信息呢?
【问题讨论】:
-
该信息不可用的情况并不少见。尝试从命令行在同一 URL 上运行
curl --head,看看它是否显示文件大小。 -
如果我执行
curl --head "https://...",它会告诉我curl: (1) Protocol https not supported or disabled in libcurl。如果我尝试使用"http://"或不使用"http://",它会显示curl: (7) couldn't connect to host。 -
使用
curl --version查看 curl.exe 编译时使用的功能。如果支持列表中未提及HTTPS和SSL,则无法请求HTTPSURL。