VB.net WebRequest返回页面没有结果的问题

时间:2011-01-27 00:17:26

标签: vb.net webrequest

我正在尝试使用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)

1 个答案:

答案 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应该设置为那个。