powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как переделать HttpWebRequest на WebClient ?
8 сообщений из 8, страница 1 из 1
Как переделать HttpWebRequest на WebClient ?
    #38722594
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Подскажите пожалуйста, как правильно перевести код, использующий HttpWebRequest на WebClient.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/soap+xml; charset=utf-8";
var buffer = Encoding.UTF8.GetBytes(request);
httpWebRequest.ContentLength = buffer.Length;

                using (var writer = httpWebRequest.GetRequestStream())
                {
                    writer.Write(buffer, 0, buffer.Length);
                }

var responce = httpWebRequest.GetResponse().GetResponseStream();



Я не пойму, куда в WebClient нужно записывать сам запрос (string request).
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722602
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще. Решил перевести на WebClient из-за таймаута с ответом.

Сервер может прислать ответ через 5-10 секунд... А я сейчас просто сразу же запрашиваю ответ, через httpWebRequest.GetResponse().GetResponseStream()

И частенько, когда сервер загружен, я не получаю ответа.

Прочитал, что в WebClient'е вроде бы эти проблемы решены. Он сам позаботится о таймауте, и даст ответ когда он будет готов. Поэтому и решил, что нужно переделать на WebClient. Но не могу понять как...
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722688
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вопрос.

Собственно проблема в том, что после
var responce = httpWebRequest.GetResponse().GetResponseStream();

идет считывание данных из стрима. И периодически (как я понимаю, если сервер занят) - стрим оказывается пустой. Я это понимаю, как то, что сервер просто не ответил ПОКА.

А разве не должен метод GetResponse() сам висеть, пока не придет какой-либо ответ (ответ, или ошибка) ? Поэтому нужно самому делать какую-то реализацию таймаута на ожидание ответа...

Но думаю, может WebClient в этом плане лучше ? Может он сам занимается этой мелкой оптимизацией.
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722699
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут посмотрите:
http://msdn.microsoft.com/ru-ru/library/1t38832a(v=vs.110).aspx

если вы про ассинхронную обработку возвращаемых данных говорите, там есть ссылочка :
http://msdn.microsoft.com/ru-ru/library/86wf6409(v=vs.110).aspx
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722725
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайПрочитал, что в WebClient'е вроде бы эти проблемы решены
Что там может решено? Если сервер не отдает данные, то хоть 10 WebClient, быстрее их не получишь.
Если речь идет о большем времени ожидания, так и у Request есть соответствующее свойство

РостигайПоэтому и решил, что нужно переделать на WebClient
По логике с него нужно начинать, и переходить на реквесты в случае тонкой настройки.
Так что мысль о замене HttpWebRequest на WebClient считаю правильной.

РостигайСобственно проблема в том, что после
var responce = httpWebRequest.GetResponse().GetResponseStream();
идет считывание данных из стрима
Неверно. Здесь открывается поток для чтения, но не факт, что там есть данные

РостигайА разве не должен метод GetResponse() сам висеть, пока не придет какой-либо ответ (ответ, или ошибка) ?
Нет. За факт наличия данных, доступных для чтения, отвечает NetworkStream.DataAvailible.
WebClient берет решение проблемы корректного получения данных на себя.
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722940
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

По ссылке расписано как работать с WebRequest WebResponce. А я как раз хочу от них уйти....
Мне нужно понять как через WebClient передать данные запроса, и получить ответ (см мой код).


Arm79,
Можете подсказать, как в WebClient реализовать отдачу запроса и получения ответа ?
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722974
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с вебклиентом всё как всегда легко и просто:

Код: c#
1.
2.
3.
WebClient wc = new WebClient();
wc.Headers.Add(HttpRequestHeader.ContentType, "application/soap+xml; charset=utf-8");
byte[] response = wc.UploadData(url, "POST", Encoding.UTF8.GetBytes(request));
...
Рейтинг: 0 / 0
Как переделать HttpWebRequest на WebClient ?
    #38722978
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайArm79,
Можете подсказать, как в WebClient реализовать отдачу запроса и получения ответа ?

GET
POST

У UploadData есть и перегрузка, позволяющая также отправлять GET-запросы
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как переделать HttpWebRequest на WebClient ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]