似乎当从 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 时出现问题的工作表示。