在使用C#和.NET 4.5发生404错误的情况下,我正在尝试确定response
的{{1}}方法返回的HttpClient
。
目前我只能说出错误已经发生而不是错误的状态,例如404或超时。
目前我的代码我的代码如下:
GetAsync
我的问题是我无法处理异常并确定其状态以及出错的其他详细信息。
我如何正确处理异常并解释发生了什么错误?
答案 0 :(得分:41)
您只需检查回复的StatusCode
属性:
static async void dotest(string url)
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
Console.WriteLine(response.StatusCode.ToString());
}
else
{
// problems handling here
Console.WriteLine(
"Error occurred, the status code is: {0}",
response.StatusCode
);
}
}
}
答案 1 :(得分:0)
属性response.StatusCode
是一个HttpStatusCode枚举。
这是我用来为用户获取名字的代码
if(response != null)
{
int numericStatusCode = (int)response.StatusCode;
// like: 503 (ServiceUnavailable)
string friendlyStatusCode = $"{ numericStatusCode } ({ response.StatusCode })";
// ...
}
或者仅应报告错误
if (response != null)
{
int statusCode = (int)response.StatusCode;
// 1xx-3xx are no real errors, while 3xx may indicate a miss configuration;
// 9xx are not common but sometimes used for internal purposes
// so probably it is not wanted to show them to the user
bool errorOccured = (statusCode >= 400);
string friendlyStatusCode = "";
if(errorOccured == true)
{
friendlyStatusCode = $"{ statusCode } ({ response.StatusCode })";
}
// ....
}