You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestSharp接收405状态码时如何读取响应JSON数据?

解决RestSharp读取405状态码响应JSON的问题

方案1:正确配置客户端,直接获取响应

你已设置ThrowOnAnyError = false,但需确保使用正确的执行方法来获取完整响应:

var client = new RestClient("https://webhook.site/c1cf7840-a050-4f22-9fec-c2e915f5b971/")
{
    Options =
    {
        FailOnDeserializationError = false,
        ThrowOnDeserializationError = false,
        ThrowOnAnyError = false // 核心配置:禁止因错误状态码抛出异常
    }
};

var body = new Dictionary<string, object>()
{
    {"test", "value"}
};

var req = new RestRequest("name").AddJsonBody(body);
req.Method = Method.Post;

// 使用Execute方法替代Post快捷方法,确保返回完整响应
var response = client.Execute(req);

if (response.StatusCode == HttpStatusCode.MethodNotAllowed)
{
    // 读取原始JSON响应体
    var errorDetails = response.Content;
    // 可选:反序列化为自定义错误模型
    // var errorModel = JsonConvert.DeserializeObject<YourErrorClass>(errorDetails);
}

方案2:捕获异常提取响应

如果配置未生效(比如使用旧版RestSharp),可通过捕获异常获取响应:

try
{
    var response = client.Post(req);
}
catch (RestSharpException ex)
{
    if (ex.Response != null && ex.Response.StatusCode == HttpStatusCode.MethodNotAllowed)
    {
        var errorJson = ex.Response.Content;
        // 处理错误信息
    }
}

关键提示

  • ThrowOnAnyError = false是核心配置,它让RestSharp不会因非2xx状态码抛出异常,而是返回包含响应体的完整结果。
  • 优先使用Execute方法,它比Post这类快捷方法更稳定,能确保你拿到响应对象。
  • 可以定义对应错误结构的模型类,将响应体反序列化为对象,更方便读取错误字段。

内容的提问来源于stack exchange,提问作者Guerrilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:57:21