проблемка в WebClient с Headers

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

самообучающийся
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 20.08.2008 (Ср) 12:13

проблемка в WebClient с Headers

Сообщение самообучающийся » 31.08.2008 (Вс) 23:37

создаю WebClient и пытаюсь добавить заголовки:

Код: Выделить всё
Dim WC As WebClient = New WebClient()
        WC.Headers.Add("Cookie", str_cookies)
        Dim data As Stream = WC.OpenRead(str_url)


с одним заголовком всё работает нормально, но если я добавляю хотя бы второй заголовок, прога виснет и не срабатывают запросы:
Код: Выделить всё
Dim WC As WebClient = New WebClient()
        WC.Headers.Add("Cookie", str_cookies)
        WC.Headers.Add("Referer", str_referer)       
        Dim data As Stream = WC.OpenRead(str_url)


отправлял запросы через обычный браузер и проверял прогой Fiddler ответы сервера, выдало:
Accept: */*
Accept-Language: ru-RU
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.6 (build 01425); .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: нужный_сайт.com
Proxy-Connection: Keep-Alive
Cookie
Referer: http://нужный_сайт.com


может кто-нибудь подсказать в чём может быть проблемма ?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: проблемка в WebClient с Headers

Сообщение Williams » 01.09.2008 (Пн) 0:36

Так сработало:

Код: Выделить всё
        Dim WC As New Net.WebClient
        WC.Headers.Add(Net.HttpRequestHeader.Cookie, "TestCookie")
        WC.Headers.Add(Net.HttpRequestHeader.Referer, "http://www.yandex.ru")
        Dim data As IO.Stream = WC.OpenRead("http://www.yandex.ru")


а можно еще так:

Код: Выделить всё
        Dim req As HttpWebRequest = HttpWebRequest.Create("http://www.google.com")
        req.Referer = "www.google.com"
        req.UserAgent = "PersonalBrowser"

        Dim resp As WebResponse = req.GetResponse
        Dim respstream As IO.Stream = resp.GetResponseStream



Программа виснет потому, что сервер не отвечает на твой вопрос, а она ждет этого.

Если сервер действительно долго отвечает, то я думаю разумно будет загрузить нужный ресурс асинхронно - WebClient.OpenReadAsync()
И вы думаете, что вас оставят в живых после прочтения этого поста?

самообучающийся
Начинающий
Начинающий
 
Сообщения: 22
Зарегистрирован: 20.08.2008 (Ср) 12:13

Re: проблемка в WebClient с Headers

Сообщение самообучающийся » 01.09.2008 (Пн) 20:55

с заголовками сработало при Net.WebClient , Williams спасибо огромное !
но, у меня считывание полученного кода производится довольно таки продолжительное время , а программу не хотелось бы затормаживать, хочу использовать асинхронный режим чтения WebClient.OpenReadAsync , но тут возникла проблемма:
str_url - строковая переменная с адресом сайта

Код: Выделить всё
Dim WC As New Net.WebClient()
        Dim addr As Uri
        addr = New Uri(str_url)
        Dim get_data As Stream = WC.OpenReadAsync(addr)
        Dim reader_code As StreamReader = New StreamReader(get_data, Encoding.GetEncoding(1251))

при этом получаю ошибку WC.OpenReadAsync(addr) - Expression does not produce a value.
подскажите, где я ещё не правильно делаю ?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: проблемка в WebClient с Headers

Сообщение Williams » 01.09.2008 (Пн) 21:11

Обработчик:

Код: Выделить всё
Sub RequestHandler(ByVal sender As Object, ByVal e As System.Net.OpenReadCompletedEventArgs)

        Dim reader_code As IO.StreamReader = _
        New IO.StreamReader(e.Result, System.Text.Encoding.GetEncoding(1251))

    End Sub


Вызов:

Код: Выделить всё
        Dim WC As New Net.WebClient()
        AddHandler WC.OpenReadCompleted, AddressOf RequestHandler
        WC.OpenReadAsync(New Uri("http://www.yandex.ru"))
И вы думаете, что вас оставят в живых после прочтения этого поста?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList