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

Jas*_*n94 1 c# async-await dotnet-httpclient

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

HttpClient client = new HttpClient();
var getResponsestring = await client.GetStringAsync("url");
Run Code Online (Sandbox Code Playgroud)

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

Dar*_*ler 17

你有两个选择.要么将请求分解为两个步骤.

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

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

var errorMessageHandler = new ErrorMessageHandler(new HttpClientHandler());
HttpClient client = new HttpClient(errorMessageHandler);
var getResponsestring = await client.GetStringAsync("url");
Run Code Online (Sandbox Code Playgroud)

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