Какие исключения может вызвать HttpClient?

Я использую HttpClient в проекте форм xamarin

Класс документирован, но я не могу найти документацию о том, какие исключения могут быть выбраны его методами.

Например, метод GetAsync не содержит никакой документации о возможных исключениях. Но я предполагаю, что это выбрасывает, например, когда сервер недоступен.

Есть ли где-то список исключений, которые этот класс мог бы выбросить?

Ответ 1

Как прокомментировали другие, это зависит от того, что вы вызываете с помощью HttpClient. Я получаю то, что вы имели в виду, хотя и вот некоторые исключения, вызванные типичными вызовами методов.

SendAsync может бросить:

  • ArgumentNullException Запрос был нулевым.
  • InvalidOperationException Сообщение запроса уже отправлено экземпляром HttpClient.
  • HttpRequestException. Не удалось выполнить запрос из-за основной проблемы, такой как сетевое подключение, сбой DNS, сертификат сервера валидация или тайм-аут.

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

Аналогично GetAsync PostAsync PutAsync GetStringAsync GetStreamAsync и т.д. могут бросать ArgumentNullException и HttpRequestException как указано выше (но не InvalidOperationException).

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

Как только вы вызвали SendAsync или GetAsync и т.д., вы получите Task<HttpResponseMessage>. Когда-то я ожидал, что я назову EnsureSuccessStatusCode(), чтобы выбросить HttpRequestException, если возвращается код состояния HTTP с невыполненным успехом. https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs#L161