【发布时间】:2016-05-05 07:30:12
【问题描述】:
我正在尝试使用 WinHTTP 连接到服务器,不幸的是,当我尝试将协议从 http 升级到 webscoket 时,API WinHttpSetOption 失败。
hSessionHandle = WinHttpOpen(L"WebSocket sample",WINHTTP_ACCESS_TYPE_NO_PROXY,NULL, NULL,0);
hConnectionHandle = WinHttpConnect(hSessionHandle, L"localhost",INTERNET_DEFAULT_HTTP_PORT, 0);
hRequestHandle = WinHttpOpenRequest(hConnectionHandle,L"GET",L"/ws",NULL,NULL,NULL, 0);
// Request protocol upgrade from http to websocket.
fStatus = WinHttpSetOption(hRequestHandle,WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET,NULL,0);
if (!fStatus)
{
dwError = GetLastError();
goto quit;
}
fStatus 返回 FALSE,GetLastError 返回错误代码 12009,表示
ERROR_WINHTTP_INVALID_OPTION
12009:对 WinHttpQueryOption 或 WinHttpSetOption 的请求指定了无效的选项值。
以上代码取自Microsoft WinHttp WebSocket demo(new GitHub home)
我的系统是 Windows 7。操作系统必须是 Windows 8 或更高版本吗?这个 API 的任何线索都失败了?
【问题讨论】:
-
由于升级完成功能,
WinHttpWebSocketCompleteUpgrade明确指定Windows 8为最小平台,我直接说是的,你需要Windows 8或更高版本。 -
感谢 WhozCraig....有什么方法可以在 Win 7 中将 websockets 与 winHttp 一起使用?
标签: c++ http websocket winhttp