【发布时间】:2013-08-14 15:48:27
【问题描述】:
似乎当从 Microsoft HTTPClient(3.5 及之前的包装器)或 HTTPWebResponse(.NET 4.0 及更高版本)读取响应流时,两个实例都开始返回二进制内容。
我们有数百个网络蜘蛛,其中许多使用不同的框架或“一次性”代码。并且他们一一开始为HTML返回垃圾。我认为这是我们正在接触和重建 DLL 的那些。这让我觉得框架发生了一些变化。
这是我的主要方法:
Public Function PostPage(ByVal URL As String, ByVal enc As Encoding) As String
Try
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateCertificate)
Dim htmlRequest As HttpWebRequest = DirectCast(WebRequest.Create(URL), HttpWebRequest)
htmlRequest.Headers.Add("Accept-Encoding", "gzip, deflate")
Dim htmlResponse As HttpWebResponse = DirectCast(htmlRequest.GetResponse(), HttpWebResponse)
Return New System.IO.StreamReader(htmlResponse.GetResponseStream(), enc).ReadToEnd()
Catch ex As Exception
Console.WriteLine("Error: " & ex.Message)
End Try
Return ""
End Function
这是非常基本的,我不确定发生了什么,每种类型的编码(包括不指定任何编码)都返回二进制。当我输入http://www.google.com 作为 URL 时,这是一个工作表示。
【问题讨论】:
-
投反对票?这在我之前从未发生过......有人可以让我知道我需要在这里做什么才能让这种情况消失,哈哈。
标签: .net httpwebrequest httpclient