提问者:小点点

在windows上的libcurl中为https编写回调


我已经从源代码中安装了libcurl(curl-7.60.0)作为Windows 10和Visual Studio 2015中的静态库。在curl/curl. h中,我添加了这些#定义:BUILDING_LIBCURL、CURL_STATICLIB、USE_SCHANNEL和USE_WINDOWS_SSPI。从C开始,我可以从超文本传输协议://访问并保存到文件中,只需一个简单的写回调函数(返回f写(ptr、大小、nMemb、(FILE*)流))。

当我尝试使用相同的回调函数从https://[host][file-path]下载时,我没有下载任何内容。Curl_version_info表示支持https(没有多个后端),TLS库名称=WinSSL。Schannel报告与主机的SSL/TLS连接。Curl报告“GET[文件路径]HTTP/1.1”和“Accept/”。

然后schan劳动报告读取和解密一些数据,“HTTP/1.1 302找到”和正确的位置。Curl_easy_perform报告没有错误,但是Content-长度为0,没有写入字节,我可以看到写回调函数从未被调用过。

使用网络浏览器下载相同的文件没有问题。

似乎我还没有设法为 https 正文调用写入回调函数。我找不到解决此问题curl_easy_setopt选项,并怀疑库的构建缺少一些#define。

请问有人能理解和协助吗?


共1个答案

匿名用户

写回调的工作原理与使用的协议无关。

然而,没有内容长度的HTTP响应302听起来像是没有什么要发送给回调,所以这是完全正常的!

你可能想告诉libcurl跟随重定向?