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 );
}