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

RestSharp升级至108.0.1后AddJsonBody问题及参数接收异常求助

RestSharp从106.9.0升级到108.0.1后的POST请求适配问题

原106.9.0版本工作代码

string sParmDb = Newtonsoft.Json.JsonConvert.SerializeObject(parmsDb); // parmsDb是无法通过查询参数传递的大对象
sParmDb = System.Web.HttpUtility.UrlEncode(sParmDb);

RestSharp.RestRequest restCall;
RestSharp.RestClient cl = new RestSharp.RestClient();
RestSharp.RestResponse rsp;

string sQueryStr = "http://myWebService";

restCall = new RestSharp.RestRequest(sQueryStr, RestSharp.Method.POST);
restCall.AddJsonBody(sParmDb);

rsp = (RestSharp.RestResponse)cl.Execute(restCall);

升级到108.0.1后的问题

  1. 编译错误:RestSharp.Method枚举中不再有POST,改为Post;RestRequest无AddJsonBody方法,添加RestSharp.Extensions命名空间后可编译通过。
  2. 编译通过后调用本地Web服务时,服务端[FromBody] string value参数始终为null。

服务端代码

public string Post([FromBody] string value)
{
    // 处理value并返回结果
}

解决方案

核心问题原因

RestSharp 108+版本对AddJsonBody的行为做了调整:旧版本传入字符串时会直接将其作为请求体内容,新版本则会将字符串当作普通对象进行JSON序列化,导致请求体变成转义后的字符串(如"\"abcdefg\""),服务端无法正确解析为[FromBody] string。

适配代码

根据不同场景选择以下方式:

场景1:传递复杂对象(原代码中的parmsDb)

无需手动序列化和URL编码,直接让RestSharp处理序列化:

using RestSharp;
using RestSharp.Extensions;

// 初始化客户端时传入基础URL
var client = new RestClient("http://localhost:60484");
var request = new RestRequest("/api/db", Method.Post);

// 直接传入对象,RestSharp会自动序列化为JSON并设置正确的Content-Type
request.AddJsonBody(parmsDb);

var response = client.Execute(request);

场景2:直接传递字符串

使用AddStringBody方法,明确指定媒体类型为application/json,确保请求体符合服务端预期:

using RestSharp;
using RestSharp.Extensions;

var client = new RestClient("http://localhost:60484");
var request = new RestRequest("/api/db", Method.Post);

// 直接传入字符串,指定Content-Type为application/json
request.AddStringBody("abcdefg", ContentType.Json);

var response = client.Execute(request);

注意事项

  • 移除手动UrlEncode操作,RestSharp会自动处理URL和请求体的编码
  • 确保引用RestSharp.Extensions命名空间,否则AddJsonBody和AddStringBody可能无法使用
  • Method枚举值改为Method.Post(首字母小写)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:16:10