Gab*_* S. 9 .net c# http http-status-codes dotnet-httpclient
我需要编写代码来处理使用HttpClient.Net Framework 4.5附带的对象发出HTTP请求后可能出现的两种不同类型的故障:
连接失败,当由于连接问题而无法访问服务器时 - 例如没有可用连接,超时到期,网络设置不正确等.
虽然技术上并非失败,但是请求成功到达服务器但服务器以HTTP错误状态代码(例如404,400,409,500等)响应的情况
一种失败类型不被视为另一种失败是非常重要的.这是正确可靠的方法吗?该EnsureSuccessStatusCode()方法似乎至少有助于第二种情况,但文档令人失望.
Gab*_* S. 12
经过一些手动测试后,好消息是似乎有一种可靠的方法来分离这两种类型的错误,但坏消息是它在所有平台上都不一致 - 至少在Windows Phone 8上没有. Net Framework 4.5 Full和Windows Store App类型的项目,以下代码可以解决问题:
try
{
var response = await httpClient.PostAsync(uri, content);
if (!response.IsSuccessStatusCode)
{
// handle the second type of error (404, 400, etc.)
}
}
catch (HttpRequestException ex)
{
// handle the first type of error (no connectivity, etc)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,在Windows Phone 8上,两种类型都在以下if条件下处理:IsSuccessStatusCode设置为false并且不HttpRequestException引发(或任何其他异常).对于WP8,我正在使用HttpClient(http://blogs.msdn.com/b/bclteam/archive/2013/02/18/portable-httpclient-for-net-framework-and-windows-phone的可移植类库实现.aspx),我问他们这种不一致是否可以修复,希望它可以而且很快就会出现.
| 归档时间: |
|
| 查看次数: |
4444 次 |
| 最近记录: |