HttpClient可以抛出哪些异常?

时间:2016-11-18 12:56:24

标签: c# httpclient

我在xamarin表单项目中使用HttpClient

该类已记录在案,但我找不到任何关于其方法可能引发异常的文档。

例如,GetAsync方法没有关于可能的例外的任何文档。但我认为它会抛出,例如当服务器无法访问时。

这个类可能会抛出一些异常列表吗?

1 个答案:

答案 0 :(得分:46)

正如其他人评论的那样,它取决于您使用HttpClient调用的内容。我得到你的意思,所以这里有一些典型的方法调用抛出的异常。

SendAsync 可以抛出:

  • ArgumentNullException 请求为空。
  • InvalidOperationException 请求消息已由HttpClient实例发送。
  • HttpRequestException 由于网络连接,DNS失败,服务器证书等基础问题,请求失败 验证或超时。
  • TaskCanceledException The request timed-out or the user canceled the request's Task

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

调用SendAsyncGetAsync等后,您将获得Task<HttpResponseMessage>。等待,如果返回的HTTP状态代码不成功,我倾向于致电EnsureSuccessStatusCode()抛出 HttpRequestException https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs#L161

相关问题