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

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

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

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

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

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

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


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

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

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