我正在尝试访问嵌入式设备上的网页。
我在Win32上使用WinHttp。
尝试读取响应时出现错误
ERROR_WINHTTP_INVALID_SERVER_RESPONSE
12152
服务器响应无法解析。
但是当我用WireShark捕获时,我可以看到响应即将到来。
因此,为了测试,我编写了一个简单的C#程序。
GetResponse引发异常
服务器提交了违反协议的协议。 Section = ResponseHeader
Detail = CR后必须加LF
因此,根据以下解决方案,我将useUnsafeHeaderParsing设置为true。而且效果很好。
HttpWebRequestError: The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF
由于我无法使用C#,因此我需要找到一种方法来将WinHttp与Win32 C ++的useUnsafeHeaderParsing设置为true
非常感谢
最佳答案
我简要地研究了option flags的WinHttpSetOption
并找到了以下条目:
WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING
此选项保留供内部使用,不应调用。
由于该选项看上去链接了一个开/关开关,因此我将尝试执行以下操作:
BOOL bResult;
BOOL bOption = FALSE;
bResult = WinHttpSetOption(hInternet,
WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING,
&bOption,
sizeof(bOption));
if (bResult == FALSE)
{
/* handle error with GetLastError() */
}
很好,但是正如MSDN所说,它仅供内部使用,因此功能将来可能会更改(或已在过去更改)。但这值得一试...祝您好运!