2012-10-17 46 views
3

如果使用WinHTTP,例如HTTP头部出现问题,WinHttpReceiveResponse将返回ERROR_WINHTTP_INVALID_SERVER_RESPONSE。即使WinHTTP格式不正确,也检索HTTP响应

有无论如何去获得返回的数据,尽管它是畸形的?

+0

在不同的语言中有很多方法。你喜欢哪种编程语言? – Searush

+0

例如,我可以告诉你一个ASP.NET/VB的方法(没有iframes) – Searush

+0

WinHTTP是一个API。所以任何语言都可以,但我不需要示例代码,只是解释如何在返回错误响应后从WinHTTP获取数据。但它必须使用WinHTTP – DougN

回答

2

直接的方法是在这种情况下绕过WinHTTP API并使用套接字进行“原始”读取,并尽力解释响应头。

如果可以找到与content-length匹配的行,那么即使标头无效,您也至少可以获取所有数据。要尝试这种方法,可以在调试器中运行代码,并查看Web服务器实际发送的内容,或尝试捕获数据包流并查看第一个数据包以查找原始字节。

您的结果很明显取决于响应的实际问题。

+1

我无法轻易摆脱WinHTTP API - 它为我处理SSL,身份验证,代理等,我不喜欢重新编写所有这些。在我的情况下,这将是生产代码,当它遇到错误时,会将原始代码转储到日志中,以便我们找出为什么它不会加载。 – DougN

相关问题