проблема с страницей возврата VB.net WebRequest без результатов - PullRequest
0 голосов
/ 27 января 2011

Я пытаюсь получить html-ответ на запрос Kayak.com, используя объект WebRequest, но чаще всего сайт не возвращает никаких результатов, я просто получаю пустую страницу 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 голосов
/ 27 января 2011

Это весь ваш код?Вы делаете что-нибудь еще с 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 должен быть установлен на это вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...