当使用新的V107 RestSharp c#生成异常时,如何获得数据响应



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

我正在调用一个自定义Web API。此Web APi,当请求未经授权时,使用httpcode 401和正文中的此信息(从Postman中的请求中提取(进行响应

{"时间戳":"2022-03-30T12:17.18.558462〃;,"消息":"未经授权";,"clazz":"com.mycompany.login.service.impl.AuthenticationServiceImpl";,"方法":"认证";,"lineno":64,"路径":"登录";}

对于RestSharp v107,我得到了一个异常,消息是";请求失败,状态代码为"未授权";,但我无法获取数据(或原始的401未经授权的http代码(。

我已经在代码中尝试过了,没有运气

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

当收到401状态时,有什么方法可以在正文中获得消息吗?有没有任何方法可以获得原始消息和异常代码(在我的代码中,我正在捕捉异常,检查状态代码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不支持这一点。您仍然可以在异常消息中获得状态代码。但是,无法在异常中包含响应内容。

最新更新