如何检查GetStringAsync是否导致401(例如)?

时间:2013-11-23 07:45:40

标签: c# async-await dotnet-httpclient

我有以下内容,我是否尝试从服务器下载字符串:

HttpClient client = new HttpClient();
var getResponsestring = await client.GetStringAsync("url");

但是我该怎么做以及服务器是否没有返回我想要的字符串,例如错误401?或者那个mather的任何网络错误

2 个答案:

答案 0 :(得分:17)

你有两个选择。将请求分解为两个步骤。

HttpClient client = new HttpClient();
var response = await client.GetAsync("url");
if (response.IsSuccessStatusCode) {
  var getResponsestring = await response.Content.ReadAsStringAsync();
}

或者您插入一个新的MessageHandler,它将返回错误的库存响应。

var errorMessageHandler = new ErrorMessageHandler(new HttpClientHandler());
HttpClient client = new HttpClient(errorMessageHandler);
var getResponsestring = await client.GetStringAsync("url");

您必须通过从DelegatingHandler派生并重写SendAsync来自己实现ErrorMessageHandler。

答案 1 :(得分:2)

HttpClient.GetStringAsync Method返回TaskException property

<强>更新

当我们使用async / await时,我们可以在try/catch块中包装等待的调用以处理异常。