web-dev-qa-db-ja.com

HttpClientはどの例外をスローできますか?

Xamarin formsプロジェクトで HttpClient を使用しています

クラスは文書化されていますが、そのメソッドがスローする可能性のある例外に関する文書は見つかりません。

たとえば、 GetAsync メソッドには、考えられる例外に関するドキュメントがありません。しかし、たとえばサーバーに到達できない場合にスローすると想定しています。

このクラスがスローする例外のリストはどこかにありますか?

38
Nathan

他の人がコメントしているように、HttpClientで呼び出しているものに依存します。私はあなたの意図を理解しているので、ここに典型的なメソッド呼び出しでスローされるいくつかの例外があります。

SendAsyncは以下をスローできます:

  • ArgumentNullException要求はヌルでした。
  • InvalidOperationException要求メッセージは、HttpClientインスタンスによって既に送信されています。
  • HttpRequestException要求は、ネットワーク接続、DNS障害、サーバー証明書の検証、タイムアウトなどの根本的な問題のために失敗しました。
  • TaskCanceledExceptionリクエストがタイムアウトしたか、ユーザーがリクエストのTask をキャンセルしました。

https://msdn.Microsoft.com/en-us/library/hh138176(v = vs.110).aspx

同様にGetAsyncPostAsyncPutAsyncGetStringAsyncGetStreamAsyncなどは、ArgumentNullExceptionHttpRequestExceptionなどをスローできます(ただし、InvalidOperationExceptionは除く) 。

https://msdn.Microsoft.com/en-us/library/hh158944(v = vs.110).aspx

SendAsyncGetAsyncなどを呼び出すと、Task<HttpResponseMessage>が得られます。待っていたら、成功していないHTTPステータスコードが返された場合、EnsureSuccessStatusCode()を呼び出してHttpRequestExceptionをスローする傾向があります。 https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs#L161

56