首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

HttpWebRequest获取的代码和网页(查看源文件)不一致!该怎么解决

2011-12-28 
HttpWebRequest获取的代码和网页(查看源文件)不一致!http://uk.site.sports.betfair.com/betting/LoadRunn

HttpWebRequest获取的代码和网页(查看源文件)不一致!
http://uk.site.sports.betfair.com/betting/LoadRunnerInfoAction.do?marketId=20515771&selectionId=201165&timeZone=PRC&region=GBR&locale=zh_CN&brand=betfair&currency=HKD

想获取   下面3个内容!
本赛事的总成交额:     HK$1,878,362  
交易总结   -   数量:     HK$27,140    
最近成交的赔率:     26.00  


找的   一段代码
        Private   Function   GetSource(ByVal   url   As   String)   As   String
                Try
                        Dim   httpReq   As   System.Net.HttpWebRequest                       'HttpWebRequest       类对       WebRequest       中定义的属性和方法提供支持 ',也对使用户能够直接与使用       HTTP       的服务器交互的附加属性和方法提供支持。        
                        Dim   httpResp   As   System.Net.HttpWebResponse                       '       HttpWebResponse       类用于生成发送       HTTP       请求和接收       HTTP       响 '应的       HTTP       独立客户端应用程序。    
                        Dim   httpURL   As   New   System.Uri(url)
                        httpReq   =   CType(WebRequest.Create(httpURL),   HttpWebRequest)
                        httpReq.Timeout   =   5000
                        httpReq.Method   =   "GET "
                        httpResp   =   CType(httpReq.GetResponse(),   HttpWebResponse)
                        Dim   reader   As   StreamReader   =   _
                        New   StreamReader(httpResp.GetResponseStream,   System.Text.Encoding.GetEncoding( "GB2312 "))                     '如是中文,要设置编码格式为“GB2312”。    
                        Dim   respHTML   As   String   =   reader.ReadToEnd()                               'respHTML就是网页源代码    
                        Return   respHTML
                        httpResp.Close()
                Catch   e   As   Exception
                        Return   "网络连接失败,请重新尝试! "
                End   Try
end   Function  


问题:
1、该页面是charset= "UTF-8 ",我换成system.Text.Encoding.UTF8)还是乱码?


2、获取页面的数据,respHTML   和   用浏览器   看到的   不一样!
本赛事的总成交额:     HK$1,878,362  
交易总结   -   数量:     HK$27,140  
这   都和   浏览器   看到的不一致!

请问如何解决!谢谢!


[解决办法]
我试了一下也是乱码,不知道为什么!但你可以换一种方法解决:
先用AxWebBrowser1.Navigate(url)显示,再取源码
Private Sub AxWebBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent) Handles AxWebBrowser1.DocumentComplete
RichTextBox1.Text = Me.AxWebBrowser1.Document.GetElementsByTagName( "html ").Item(0).OuterHtml
End Sub
[解决办法]
很明显...
人家可能用cookie保存了一些信息...
或者是用referer...
自己看着办吧...
[解决办法]
没有cookie传递,没有referer
[解决办法]
语言文化差异?
-------------------

byte[] data;
//.............

System.Globalization.CultureInfo cultrue = new System.Globalization.CultureInfo( "en-US ", false);
System.Threading.Thread.CurrentCulture = cultrue;
System.String content = System.Text.Encoding.UTF8.GetString(data);
[解决办法]
其实数据是一样的,只是货币单位不同造成的,你看到是香港货币,代码得到的是美元、。要得到香港货币,这样修改一下

httpReq.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-HK ")

如果修改一下你机器使用的不同区域,浏览器的结果也是不同的


Dim url As String = "http://uk.site.sports.betfair.com/betting/LoadRunnerInfoAction.do?marketId=20519472&selectionId=58344&timeZone=PRC&region=GBR&locale=zh_CN&brand=betfair&currency=HKD "
Dim httpReq As System.Net.HttpWebRequest 'HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持 ',也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。

Dim httpResp As System.Net.HttpWebResponse ' HttpWebResponse 类用于生成发送 HTTP 请求和接收 HTTP 响 '应的 HTTP 独立客户端应用程序。
Dim httpURL As New System.Uri(url)
httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
httpReq.Timeout = 5000
httpReq.Method = "GET "
httpReq.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-HK ")
httpReq.Headers.Add(HttpRequestHeader.AcceptEncoding, "utf-8 ")
httpReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30) "
httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
Dim reader As StreamReader = New StreamReader(httpResp.GetResponseStream, System.Text.Encoding.UTF8)
Dim wr As StreamWriter = New StreamWriter( "c:\out.htm ", False, System.Text.Encoding.UTF8)
'如是中文,要设置编码格式为“GB2312”。
Dim respHTML As String = reader.ReadToEnd() 'respHTML就是网页源代码
TextBox1.Text = respHTML
wr.Write(respHTML)
wr.Close()
httpResp.Close()

热点排行