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

RestSharp v107+ C#:如何删除请求体并添加新请求体

在RestSharp V107+中更新请求体的正确方式

你之前用request.Parameters.RemoveParameter("body")无效,是因为RestSharp V107+里,通过AddJsonBody或AddParameter添加的请求体参数,Name属性不是"body",没法通过名字直接匹配删除。正确的做法是通过参数类型来定位并处理:

方法1:删除旧请求体后添加新的

  1. 先找到现有请求体参数:
// 筛选出类型为RequestBody的参数
var oldBodyParam = request.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody);
  1. 移除旧参数(如果存在):
if (oldBodyParam != null)
{
    request.Parameters.Remove(oldBodyParam);
}
  1. 添加新请求体,用你习惯的方式即可:
// 方式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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:45:41