C#を移植可能なdllとして使用するUWPアプリケーション用のhttpプロキシサーバーを開発しようとしています。再試行タイムアウトは送信された要求の数に関係なく60秒です4回のリクエストが送信されますが、再試行が必要な場合は、少数のタスクのために60秒間待たなければなりません。リクエストの数に基づいて最適なタイムアウトが使用されるようなリトライタイムアウトを自動化できる方法はありますかsendasync(リクエストの送信に使用)内でグローバルに宣言されたものを使用して呼び出すことができますか?送信されたHTTP要求の数に基づいて自動タイムアウトを設定する
-1
A
答えて
0
UWPには、HTTPリクエストを送信するために使用できるものが2つあります(HttpClient
)。それらはSystem.Net.Http.HttpClientとWindows.Web.Http.HttpClientです。私はどちらがあなたが使用しているかわからない。
System.Net.Http.HttpClientの場合、タイムアウトを設定するには2通りの方法があります。 、単一の要求にタイムアウトを設定キャンセルトークンパターンを使用するには
var myClient = new System.Net.Http.HttpClient();
myClient.Timeout = TimeSpan.FromSeconds(30);
:そのクライアントからのすべての要求のタイムアウトを設定するには、我々はHttpClient.Timeoutプロパティを使用することができますWindows.Web.Http.HttpClientについて
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(30));
var httpClient = new System.Net.Http.HttpClient();
var resourceUri = new Uri("http://www.contoso.com");
try
{
HttpResponseMessage response = await httpClient.GetAsync(resourceUri, cts.Token);
}
catch (TaskCanceledException ex)
{
// Handle request being canceled due to timeout.
}
catch (HttpRequestException ex)
{
// Handle other possible exceptions.
}
を、 Windows.Web.Http.HttpClient型にタイムアウトプロパティはありません。その結果、上記の取り消しトークンパターンを使用する必要があります。
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(30));
var httpClient = new Windows.Web.Http.HttpClient();
var resourceUri = new Uri("http://www.contoso.com");
try
{
var response = await httpClient.GetAsync(resourceUri).AsTask(cts.Token);
}
catch (TaskCanceledException ex)
{
// Handle request being canceled due to timeout.
}
catch (Exception ex)
{
// Handle other possible exceptions.
}
詳細については、Demystifying HttpClient APIs in the Universal Windows Platformを参照してください。
関連する問題
- 1. 要求スコープ付きBeanの値に基づいてレンダリングされたときにフォームを送信する方法
- 2. Django Rest HTTP要求のタイムアウトを設定する方法
- 3. 送信されたパラメータに基づいて動的リダイレクトphpを作成する
- 4. データベースで送信されたユーザーの選択に基づいてHTMLラジオボタンを設定してください
- 5. d3 xhr送信要求でタイムアウトを指定する方法
- 6. クエリに基づいてタイムアウトを設定する
- 7. HTTP、408要求タイムアウト
- 8. ノードヘッダー(要求/ Restler)でCookieを送信するときのノードのHTTPタイムアウト
- 9. プロキシ要求タイムアウトを設定する
- 10. FSharp.Data HTTPリクエスト - 要求のタイムアウトを設定できません
- 11. Swift:設定されている別のプロパティに基づいてプロパティを要求できますか?
- 12. 自動設定vbar line_widthはBokehのx_rangeに基づいて
- 13. 指定された日付時刻に基づいてタイムアウトのミリ秒を設定する
- 14. すべての要求に対してHTTP基本認証を設定する
- 15. 設定されたアスペクト比に基づいてウィンドウのサイズを自動的にリサイズする
- 16. nginx - 要求されたヘッダに基づいた応答
- 17. 言語設定に基づいてユーザーに電子メールを送信する
- 18. HTTP要求に対する信頼できるJRubyタイムアウト
- 19. PHPのパラメータ入力に基づく自動設定関数名
- 20. 内部のUICollectionViewに基づくテーブルビューの自動設定高さ
- 21. 長いテキストに基づいてテキストボックスを自動拡張に設定する
- 22. httpヘッダーに基づくYii2自動ログイン
- 23. :要求のparamに基づいてclassappend
- 24. Java:PHPで送信されたHTTP POST要求をリッスンする方法は?
- 25. Lighttpdは着信要求に基づいてX-Forwarded-Hostを設定しました
- 26. CでHTTP POST要求を送信
- 27. 要求されたドメインに基づいてGitLab DockerコンテナにSSHを転送する方法
- 28. 接続タイムアウトと読み取りタイムアウトがデフォルト(無限)に設定されていても、要求タイムアウトを受信していますか?
- 29. フォームフォームデータに基づいてリダイレクトを送信
- 30. 設定に基づいて指定されたプロパティのみを表示する
こんにちはジェイ!私はあなたに私の問題の更新を与えてくれないことを本当に残念です。私はsystem.net.http.httpclientを使用しています。あなたが伝えようとしていることを理解しました。要求がsendasyncメソッドで60秒に再試行される前にタイムアウトを設定しました。おそらく20秒後に引退する。ここでは、リクエスト数に基づいて再試行のタイムアウトを自動化する必要がありました。 –
タイムアウトは、要求を送信する前にのみ設定できます。リクエストが送信された場合、タイムアウトを変更する方法はありません。 –
ああ申し訳ありませんジェイ私はあなたが私のことを誤解していると思います。私は例を使って実証するのが一番良いと思います。今はN個のリクエストを送信しているとします。N> 30ならば60秒、N <30ならタイムアウト30秒、より具体的な何か。私はこの論理のためのコードやもっと具体的なものを実装する必要があります。詳細を提供できるようにあなたのメールIDを教えてください。 –