使用新的 V107 RestSharp c# 产生异常时如何获取数据响应?

How to get data response when Exception produced using the new V107 RestSharp c#?

我正在使用带有 net 5.0 的新 RestSharp V107 版本。

我正在调用自定义 Web API。此 Web APi,当请求未被授权时使用 httpcode 401 响应并在正文中提供此信息(从 Postman 中提出的请求中提取)

{ “时间戳”:“2022-03-30T12:17:18.558462”, "message": "未经授权", "clazz": "com.mycompany.login.service.impl.AuthenticationServiceImpl", “方法”:“验证”, “线”:64, “路径”:“/登录” }

使用 RestSharp v107 时出现异常,消息为“请求失败,状态代码未经授权”,但我无法获取数据(或原始 401 未经授权的 http 代码)。

我已经在代码中试过了,没有成功

    var optionsbase = new RestClientOptions("http://mycompany")
      {
        ThrowOnAnyError = true,
        FailOnDeserializationError = true,
        ThrowOnDeserializationError = true,
      };

收到401 Status时,有什么方法可以获取正文中的消息吗? 有没有办法获取原始消息和异常代码(在我的代码中我正在捕获异常,检查状态代码 401 并将信息保存在日志正文中)

实际上,最好的方法不是强制 RestSharp 抛出异常,而是检查响应。 RestResponse 对象包含响应内容和响应代码。

这是计算异常的代码:

                => httpResponse.IsSuccessStatusCode
                    ? null
#if NETSTANDARD
                    : new HttpRequestException($"Request failed with status code {httpResponse.StatusCode}");
#else
                    : new HttpRequestException($"Request failed with status code {httpResponse.StatusCode}", null, httpResponse.StatusCode);
#endif

你可以看到,当你使用.NET Core 3.1+或者.NET 5+时,你也会在异常中得到状态码,但是.NET Standard不支持。您仍会在异常消息中获得状态代码。但是,无法将响应内容包含在异常中。