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
相关产品推荐
相关产品推荐

