HttpWebRequest асинхронный post запрос - C#

Узнай цену своей работы

Формулировка задачи:

Мне нужно создать post запрос и послать его асинхронно делаю это вот так:
Листинг программы
  1. HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.ya.ru/");
  2. request.Method = "post";
  3. string data = "test";
  4. request.ContentLength = data.Length;
  5. StreamWriter writer = new StreamWriter(request.GetRequestStream());
  6. writer.Write(data);
  7. writer.Close();
  8. Console.WriteLine("Посылаем запрос");
  9. request.BeginGetResponse((asyncResult) =>
  10. {
  11. WebResponse response = request.EndGetResponse(asyncResult);
  12. Console.WriteLine("ответ получен");
  13. StreamReader reader = new StreamReader(response.GetResponseStream());
  14. string str = reader.ReadToEnd();
  15. }, null);
  16. Console.WriteLine("Запрос послан");
Проблема в том, что запрос посылается не асинхронно, метод BeginGetResponse не возвращается сразу же, а ждет ответа от сервера, в таком случает не никакого смысла использовать BeginGetResponse. Если создать обычный get запрос то все работает как нужно. Это какая-то особенность WebRequest или это я что-то делаю не так?

Решение задачи: «HttpWebRequest асинхронный post запрос»

textual
Листинг программы
  1.         private static void OnAsyncCallback( IAsyncResult asyncResult ) {
  2.             var httpWebRequest = (HttpWebRequest)asyncResult.AsyncState;
  3.             WebResponse response = httpWebRequest.EndGetResponse( asyncResult );
  4.             Console.WriteLine( "ответ получен" );
  5.             var reader = new StreamReader( response.GetResponseStream() );
  6.             string str = reader.ReadToEnd();
  7.             Console.WriteLine( str );
  8.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут