我正在尝试访问嵌入式设备上的网页。 我在 Win32 上使用 WinHttp。 尝试读取响应时出现错误
ERROR_WINHTTP_INVALID_SERVER_RESPONSE 12152 The server response cannot be parsed.
但是当我使用 WireShark 捕获时,我可以看到响应即将到来。 所以为了测试我写了一个简单的 C# 程序。 GetResponse 抛出异常
The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF
所以根据下面的解决方案,我将 useUnsafeHeaderParsing 设置为 true。而且效果很好。
因为我不能使用 C#,所以我需要找到一种方法来将 useUnsafeHeaderParsing 设置为 true for WinHttp with win32 C++
非常感谢
最佳答案
我简要地查看了 option flags的 WinHttpSetOption
并找到以下条目:
WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING This option is reserved for internal use and should not be called.
由于该选项看起来与开/关开关有关,所以我会尝试执行以下操作:
BOOL bResult;
BOOL bOption = FALSE;
bResult = WinHttpSetOption(hInternet,
WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING,
&bOption,
sizeof(bOption));
if (bResult == FALSE)
{
/* handle error with GetLastError() */
}
好吧,但正如 MSDN 所说,它保留供内部使用,因此该功能将来可能会发生变化(或者过去已经发生变化)。但这值得一试……祝你好运!
关于c++ - 为 C++ WinHttp 设置 useUnsafeHeaderParsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379771/