4

Windows 8 アプリで HTTP 要求を送信し、HTTP 応答を受信するために HttpClient を使用しています。同じことについていくつか質問があります。

1) 単一の HttpClient オブジェクトを使用して、複数/並列の HTTP リクエストを送信できますか? HttpClient オブジェクトを効率的に使用するための推奨される方法はありますか?

2) 毎回 HttpClient オブジェクトを作成する場合と、新しいリクエストごとに同じオブジェクトを再利用する場合の違いは何ですか?

3) Fiddler を使用してリクエストとレスポンスを追跡しています。私が見つけたのは、Fiddler の応答時間は、アプリ内で手動で計算している応答時間とは異なるということです。Fiddler での要求の応答時間は、アプリで計算された応答時間よりも常に短くなります。なぜそうなのか誰か教えてください。

4) 私が遭遇したもう 1 つのことは、すべての要求に対して HTTPS ハンドシェイクを行っていることです。代わりに、最初にのみ実行する必要があります。Fiddler を使用して確認したところ、はっきりと表示されています。これを毎回実行しないようにするために、HttpClient オブジェクトに設定する必要があるプロパティはありますか。

5) HttpClient がスレッドセーフかどうか?

4

2 に答える 2

3

1 & 5:

HttpClient マニュアル:

次のメソッドはスレッド セーフです。

  1. CancelPendingRequests
  2. 非同期の削除
  3. GetAsync
  4. GetByteArrayAsync
  5. GetStreamAsync
  6. GetStringAsync
  7. PostAsync
  8. PutAsync
  9. SendAsync

2 & 4:

HttpClient マニュアル:

HttpClient クラス インスタンスは、HTTP 要求を送信するセッションとして機能します。

3:

Fiddler はプロキシとして機能します。ブラウザーは要求を Fiddler に送信し、Fiddler は要求をオリジン サーバーに転送します。これにより、リクエスト時間が追加されます。

于 2012-12-19T10:21:57.193 に答える
1

非同期の HttpRequest ごとに同じ HttpClient オブジェクトを使用して、リクエストが重複しないようにしてください。

于 2013-02-15T12:24:07.887 に答える