如何处理来自 HttpClient() 的 HTML 错误代码和超时

How to deal with HTML error codes and timeout from HttpClient()

我正在使用 HttpClient 连接到服务器(请参阅下面的简化代码)。我无法弄清楚如何响应 HTML 错误代码(例如 403)和超时,因此我可以报告结果。

当我遇到 403 错误代码时,在 Visual Studio 中出现错误弹出窗口。但是我可以弄清楚如何在代码中将其转换为 try 。即错误弹出窗口中是否存在异常的名称?

using System.Net.Http;

HttpClient client = new HttpClient();
var response = client.PostAsync(dutMacUrl, null).Result;
var result = response.Content.ReadAsStringAsync().Result;

您可以使用 async/await 功能来简化代码并避免使用 Result

例如

public async Task<string> Foo(string uri)
{
    var client = new HttpClient();
    try
    {
        var response = await client.PostAsync(uri, null);
    }
    catch (Exception ex)
    {
        //here you handle exceptions
    }

    // use this if (response.StatusCode != HttpStatusCode.OK) { do what you want }
    // or this if (response.IsSuccessStatusCode) { do what you want }
    var result = await response.Content.ReadAsStringAsync();
    return result;
}

如果您使用的是 webAPI,另一种选择是使用 IHttpActionResult

    public object IHttpActionResult mymethod()
    {
    //instantiate your class or object
    IEnummerable<yourClass> myobject = new IEnmmerable<yourClass>(); //assuming you want to return a collection
       try{
          //..dostuff
          //..handle dto or map result back to object 
              return Ok(myobject)
           }
           catch(Exception e)
           {
            //return a bad request if the action fails
            return BadRequest(e.Message)
           }
     }

这将允许您调用 api 端点,并且 return 使用更新对象的成功响应或 return 如果端点失败则发出错误请求。