在windows上的libcurl中为https写回调

时间:2018-06-10 08:30:56

标签: windows https libcurl

我已经从源代码中安装了libcurl(curl-7.60.0)作为Windows 10和Visual Studio 2015中的静态库。在curl / curl.h中,我添加了这些#defines:BUILDING_LIBCURL,CURL_STATICLIB,USE_SCHANNEL和USE_WINDOWS_SSPI。从C ++我可以通过一个简单的写回调函数(http://返回fwrite(ptr,size,nmemb,(FILE *)stream)来访问和保存到http://的文件没有问题。)

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

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

使用Web浏览器下载同一文件没问题。

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

有人能理解和帮助吗?

1 个答案:

答案 0 :(得分:0)

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

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

可能想告诉libcurl follow redirects