Как можно HttpClient.PostAsync использоваться для отправки HTTP-запросов на URL-адреса с искусственным временем отправки ответа.
Обратите внимание на URL-адрес и параметр sleep=30, который используется для введения искусственной задержки в 30 секунд перед отправкой ответа HTTP.
Console.WriteLine("Start time : " + DateTime.Now);
for (int i = 1; i <= 10; i++)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(@"http://fake-response.appspot.com/api/?data={Hello World}&sleep=30");
//client.BaseAddress = new Uri(@"http://fake-response.appspot.com/api/?data={Hello World}&status=200");
client.Timeout = new TimeSpan(0, 0, 60);
var parameters = new Dictionary<string, string>();
parameters["ContentType"] = "text/plain;charset=UTF-8";
//Create Task to POST to the URL
client.DefaultRequestHeaders.ExpectContinue = true;
var response = await client.PostAsync(client.BaseAddress, new FormUrlEncodedContent(parameters));
Task<bool> b1 = ProcessURLAsync(response, 1, 5, 2);
}
}
Console.WriteLine("End time : " + DateTime.Now);
Что нужно сделать, так это то, что асинхронные HTTP-сообщения должны выполняться в цикле и не должны зависеть от тайм-аута, указанного в URL-адресе. Однако время ожидания PostAsync истекает до получения ответа.
Пожалуйста, проверьте время, необходимое для отправки 2 разных URL-адресов в цикле из 10 асинхронных сообщений POST.
Я проверил HttpClient.DefaultRequestHeaders.ExpectContinue , но я так не думаю может помочь в этом случае использования.