c# 人才济济 来问个奇怪的有关问题
c# 人才济济 来问个奇怪的问题
我自己的vb。net的代码 功能是自动识别编码 出问题的地方是
我自己的vb。net的代码 功能是自动识别编码 出问题的地方是
MsgBox(html.ToString) '这里有数据第二个的居然是空的。很头大了 兄弟们有空帮我看看 是什么地方出错了。哎。头大了
encoding = GetEncoding(html) '获取编码
reader = New StreamReader(readergzip, encoding)
html = reader.ReadToEnd
MsgBox(html.ToString) '这里没有数据
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.IO.Compression
Imports System.Text.RegularExpressions
Public Class http_helper
Public Function GetHtml(ByVal url As String) As String
Return GetHtml(url, Nothing)
End Function
Public Function GetEncoding(ByVal html As String) As Encoding
Dim pattern As String = "(?is)charset=([""]?)(?<charset>[-a-z-A-Z_0-9]+)([""]?)"
Dim charset As String = Regex.Match(html, pattern).Groups("charset").Value
Try
Return Encoding.GetEncoding(charset)
Catch generatedExceptionName As ArgumentException
Return Nothing
End Try
End Function
Public Function GetHtml(ByVal url As String, ByVal encoding As Encoding) As String
Dim request As HttpWebRequest = Nothing
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader = Nothing
Dim readergzip As Stream = Nothing
Dim html As String
' Try
request = CType(WebRequest.Create(url), HttpWebRequest)
request.Timeout = 20000
request.Headers.Add("Accept-Encoding", "gzip")
request.AllowAutoRedirect = False
request.KeepAlive = True
request.ReadWriteTimeout = 9999999
response = CType(request.GetResponse(), HttpWebResponse)
If response.StatusCode = HttpStatusCode.OK AndAlso response.ContentLength < 1024 * 1024 Then
If response.ContentEncoding.ToLower.Contains("gzip") Then
' reader = New StreamReader(New GZipStream(response.GetResponseStream(), CompressionMode.Decompress), encoding)
readergzip = New GZipStream(response.GetResponseStream(), CompressionMode.Decompress)
Else
readergzip = response.GetResponseStream()
End If
If encoding IsNot Nothing Then
reader = New StreamReader(readergzip, encoding)
Return reader.ReadToEnd
End If
reader = New StreamReader(readergzip, encoding.UTF8)
html = reader.ReadToEnd
MsgBox(html.ToString) '这里有数据
encoding = GetEncoding(html) '获取编码
reader = New StreamReader(readergzip, encoding)
html = reader.ReadToEnd
MsgBox(html.ToString) '这里没有数据