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 ); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д