使用新的 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不支持。您仍会在异常消息中获得状态代码。但是,无法将响应内容包含在异常中。
我正在使用带有 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不支持。您仍会在异常消息中获得状态代码。但是,无法将响应内容包含在异常中。