C# 如何使用RestSharp访问HTTP请求正文?

C# 如何使用RestSharp访问HTTP请求正文?,c#,rest,.net-3.5,client,restsharp,C#,Rest,.net 3.5,Client,Restsharp,我正在C#.NET3.5中构建一个RESTful API客户端 我第一次开始使用旧的HttpWebClient(和HttpWebResponse)构建它,我可以用它做任何我想做的事情。我很高兴。唯一让我困扰的是JSON响应的自动反序列化 因此,我听说了一个很棒的库,名为RestSharp(104.1),它简化了restfulapi客户机的开发,并自动反序列化JSON和XML响应。我把所有代码都打开了,但现在我意识到我不能用HttpWebClient和HttpWebResponse做我能做的事情,

我正在C#.NET3.5中构建一个RESTful API客户端

我第一次开始使用旧的
HttpWebClient
(和
HttpWebResponse
)构建它,我可以用它做任何我想做的事情。我很高兴。唯一让我困扰的是JSON响应的自动反序列化

因此,我听说了一个很棒的库,名为RestSharp(104.1),它简化了restfulapi客户机的开发,并自动反序列化JSON和XML响应。我把所有代码都打开了,但现在我意识到我不能用
HttpWebClient
HttpWebResponse
做我能做的事情,比如访问和编辑原始请求主体

有人有办法吗


编辑:我知道如何设置请求正文(使用
request.AddBody()
),我的问题是我想获取此请求正文字符串,编辑它,然后在请求中重新设置它(动态更新请求正文)

请求正文是一种参数类型。要添加一个,您可以执行以下操作之一

req.AddBody(body);
req.AddBody(body,xmlNamespace);
req.AddParameter(“text/xml”,body,ParameterType.RequestBody);
req.AddParameter(“application/json”,body,ParameterType.RequestBody);
要检索正文参数,可以在
req.Parameters
集合中查找
Type
等于
ParameterType.RequestBody
的项

请参阅
RestRequest
类的代码

以下是政府必须说的话:

如果设置了此参数,则其值将作为 要求该参数的名称将被忽略,其他参数的名称也将被忽略 RequestBody参数–仅接受1个

RequestBody只对POST或PUT请求起作用,因为实际上只有它们才起作用 派人去

如果您也有GetOrPost参数,它们将覆盖 RequestBody–RestSharp不会将它们合并,但会将它们合并 扔掉RequestBody参数

要动态读取/更新body参数,可以尝试:

var body = req.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody);
if (body != null)
{
    Console.WriteLine("CurrentBody={0}", body.Value);
    body.Value = "NewBodyValue";
}

否则,请使用不同的主体创建一个新的
RestRequest
对象副本。

非常好,谢谢!这里有完整的工作代码:这里不是
。Where([lambda]).FirstOrDefault()
如果需要JSON:
req.JsonSerializer.Serialize(request.Parameters[1])