HttpWebRequest асинхронный post запрос - C#
Формулировка задачи:
Мне нужно создать post запрос и послать его асинхронно
делаю это вот так:
Проблема в том, что запрос посылается не асинхронно, метод BeginGetResponse не возвращается сразу же, а ждет ответа от сервера, в таком случает не никакого смысла использовать BeginGetResponse. Если создать обычный get запрос то все работает как нужно.
Это какая-то особенность WebRequest или это я что-то делаю не так?
Листинг программы
- 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("Запрос послан");
Решение задачи: «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 );
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д