2016-11-18 6 views
11

Я использую HttpClient в проекте формы xamarinКакие исключения могут вызывать HttpClient?

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

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

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

+1

Да, в документации конкретных методов. Почему ты хочешь знать? – CodeCaster

+1

Вы получаете «HttpResponseMessage», который имеет свойства «IsSuccessStatusCode» и «StatusCode», который может быть одним из следующих: https://msdn.microsoft.com/en-us/library/system.net.httpstatuscode(v=vs .118) .aspx Это то, что вы ищете? –

+0

@CodeCaster Я не могу найти документацию об исключениях (например, здесь: https://msdn.microsoft.com/de-de/library/hh158944(v=vs.118).aspx). Я хочу знать, потому что я хочу обрабатывать все исключения. – Nathan

ответ

19

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

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

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

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

Аналогично GetAsyncPostAsyncPutAsyncGetStringAsyncGetStreamAsync и т.д. могут бросить 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

+10

Он также может t hrow 'TaskCanceledException': https://stackoverflow.com/a/12901496/67824. –