HttpClient.PostAsyncを使用して、応答を返送するための人為的な時間があるURLにHTTP要求を投稿する方法を教えてください。人工タイムアウト後にURLが応答するときにHttpClient.PostAsyncを非同期で使用する方法?
URLとパラメータsleep = 30に注意してください。これは、HTTP応答を返す前に30秒の人為的な遅延を導入するために使用されます。
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は応答を受信する前にタイムアウトします。
10件の非同期の記事
のループで2つの異なるURLを投稿するために必要な時間を確認してください、私はHttpClient.DefaultRequestHeaders.ExpectContinueを確認し、私はこれは、このユースケースに役立つかもしれないと思います。
わかりませんが、無限のタイムアウトが必要なのでしょうか? –
@KooKiz - それは代案ですが、要求が非同期になることはありません –
要求は30秒かかると予想されますが、タイムアウトは10秒に設定され、タイムアウトします。ここで何が間違っていますか? – Evk