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

RestSharp GET请求返回BadRequest但无法获取响应体问题咨询

在.NET 6 + RestSharp 108.0.2中获取BadRequest的响应体

完全可以获取到服务器返回的JSON响应体,有两种常用方案:

方案1:从捕获的异常中提取响应体

RestSharp在抛出HttpRequestException时,其内部实际封装了RestResponseException,可以通过InnerException获取到包含完整响应信息的RestResponse对象,进而读取响应体:

try
{
    var client = new RestClient("https://your-api-url.com");
    var request = new RestRequest("/target-endpoint", Method.Get);
    request.AddParameter("invalid-param", "wrong-value"); // 错误参数

    var response = await client.ExecuteAsync<YourResponseModel>(request);
}
catch (HttpRequestException ex)
{
    if (ex.InnerException is RestResponseException restException)
    {
        // 获取服务器返回的JSON响应体
        string errorResponseJson = restException.Response.Content;
        
        // 可选:将JSON反序列化为错误模型
        var errorDetails = System.Text.Json.JsonSerializer.Deserialize<YourErrorModel>(errorResponseJson);
        
        // 处理错误信息
        Console.WriteLine($"错误原因:{errorDetails?.Message}");
    }
}

方案2:禁用自动抛出异常,直接处理响应

通过配置RestClientOptions的ThrowOnAnyError为false,让RestSharp在非2xx状态码时不抛出异常,直接返回RestResponse,你可以自行检查状态码并读取响应体:

var clientOptions = new RestClientOptions("https://your-api-url.com")
{
    ThrowOnAnyError = false // 禁用自动抛出异常
};

var client = new RestClient(clientOptions);
var request = new RestRequest("/target-endpoint", Method.Get);
request.AddParameter("invalid-param", "wrong-value");

var response = await client.ExecuteAsync<YourResponseModel>(request);

if (!response.IsSuccessful)
{
    // 获取错误响应体
    string errorResponseJson = response.Content;
    var errorDetails = System.Text.Json.JsonSerializer.Deserialize<YourErrorModel>(errorResponseJson);
    
    // 处理错误
    Console.WriteLine($"请求失败,状态码:{response.StatusCode},错误信息:{errorDetails?.Details}");
}

说明

RestSharp 108.x版本中ThrowOnAnyError默认值为true,所以默认会在非成功状态码时抛出异常。上述两种方案都能完整获取到Fiddler中看到的JSON响应体,根据你的代码风格选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:01:01