RestSharp v107+ C#:如何删除请求体并添加新请求体
在RestSharp V107+中更新请求体的正确方式
你之前用request.Parameters.RemoveParameter("body")无效,是因为RestSharp V107+里,通过AddJsonBody或AddParameter添加的请求体参数,Name属性不是"body",没法通过名字直接匹配删除。正确的做法是通过参数类型来定位并处理:
方法1:删除旧请求体后添加新的
- 先找到现有请求体参数:
// 筛选出类型为RequestBody的参数 var oldBodyParam = request.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody);
- 移除旧参数(如果存在):
if (oldBodyParam != null) { request.Parameters.Remove(oldBodyParam); }
- 添加新请求体,用你习惯的方式即可:
// 方式A:手动序列化后添加 request.AddParameter("application/json; charset=utf-8", JsonConvert.SerializeObject(newBody), ParameterType.RequestBody); // 方式B:用AddJsonBody自动序列化 request.AddJsonBody(newBody, "application/json");
方法2:直接更新现有请求体参数
如果不想删除再添加,也可以直接修改现有参数的Value(注意对应不同的添加方式,Value类型不同):
- 如果你之前用
AddParameter手动传序列化后的字符串:
var bodyParam = request.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody); if (bodyParam != null) { // 直接替换为新的序列化字符串 bodyParam.Value = JsonConvert.SerializeObject(newBody); // 按需更新ContentType bodyParam.ContentType = "application/json; charset=utf-8"; }
- 如果你之前用
AddJsonBody(RestSharp自动处理序列化):
var bodyParam = request.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody); if (bodyParam != null) { // 直接替换为新的对象,RestSharp会重新序列化 bodyParam.Value = newBody; // 按需更新ContentType bodyParam.ContentType = "application/json"; }
内容的提问来源于stack exchange,提问作者wzayed
相关产品推荐
相关产品推荐

