首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WinHttpSendRequest失败,错误代码为87

WinHttpSendRequest失败,错误代码为87
EN

Stack Overflow用户
提问于 2019-04-02 00:41:11
回答 1查看 1.5K关注 0票数 1

我尝试使用WinHttpSendRequest从服务器下载文件,但结果是0,错误代码是87 (ERROR_INVALID_PARAMETER)。

代码语言:javascript
运行
复制
// Specify an HTTP server.
if (hSession)
        hConnect = WinHttpConnect( hSession, T2W((LPTSTR)tsDownloadServer.c_str()), wPort, 0 );
// tsDownloadServer = "xxx.xxx.xxx.xx:xxxx"

// Create an HTTP request handle.
if (hConnect)
        hRequest = WinHttpOpenRequest( hConnect, L"GET",T2W((LPTSTR)tsDownloadFileURLPath.c_str()), NULL, WINHTTP_NO_REFERER, ppwszAcceptTypes, dwOpenRequestFlag );
// tsDownloadFileURLPath = "/xxxxx/xxxxxxxx/58bbf9067ad35634c7caa5594e8ec712/windows_installer/xxxxx_xxxxxx.wak"

bResults = WinHttpSendRequest( hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0 );

bResults为0,GetLastError()返回87

我在网上研究了相关问题是由于超过24字节的数据,但在我的情况下,我在参数中设置了WINHTTP_NO_REQUEST_DATA。

如何向服务器发送请求?

EN

回答 1

Stack Overflow用户

发布于 2019-04-02 09:54:43

ERROR_INVALID_PARAMETER表示问题出在处理程序hRequest上,您还没有检查返回值。如果为NULL,则可能是上一次调用WinHttpOpenRequest时的原因;或者甚至是WinHttpConnect失败了,所以它不再获取hRequest

正如@Remy Lebeau所说,这取决于您的Unicode设置。禁用Unicode时,如果tsDownloadServertsDownloadFileURLPath的类型为wstring,则(LPTSTR)tsDownloadServer.c_str()将从宽字符转换为多个字节。则宽字符中的零(如果字符为ASCII)被视为终止符:

并且字符串被截断:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55459862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档