我正在尝试使用WebRequest
对象获取Kayak.com查询的html响应,但更常见的是,该网站没有返回任何结果,我只是得到一个空的Kayak页面,我必须尝试在得到结果之前请求大约5次...这可能是什么原因?我的代码如下:感谢您的输入!费尔南多
Dim WReq As WebRequest = WebRequest.Create("http://www.kayak.com/flights/MIA-LAX/2011-01-29/2011-02-11")
WReq.Timeout = 100000
Dim wResp As WebResponse = WReq.GetResponse()
Dim r As StreamReader = New StreamReader(wResp.GetResponseStream(), Encoding.ASCII)
答案 0 :(得分:0)
这是你的全部代码吗?您是否正在使用StreamReader进行任何进一步的操作?如果没有,那就是你的问题。获得流后,您需要将其读入可以使用的内容:
Dim WReq As WebRequest = WebRequest.Create("http://www.kayak.com/flights/MIA-LAX/2011-01-29/2011-02-11")
WReq.Timeout = 100000
Dim wResp As WebResponse = WReq.GetResponse()
Dim T As String
Using r As StreamReader = New StreamReader(wResp.GetResponseStream(), Encoding.ASCII)
T = r.ReadToEnd()
End Using
Trace.WriteLine(T)
如果您已完成此操作,但只是没有发布您的代码,那么您可能遇到了正在发送的HTTP UserAgent标头的问题。您可能希望通过执行以下操作来调整它:
DirectCast(WReq, HttpWebRequest).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)"
与您的代码完全无关的问题是,您假设内容为ASCII,如果有127个障碍以上的任何字符,将会引发您的注意。您应该检查标头以确定要使用的编码,但由于您有一个已知的网站,您可以预先确定这一点,并知道KAYAK使用UTF-8。所以你的StreamReader应该设置为那个。