C# 如何使用RestSharp访问HTTP请求正文?
我正在C#.NET3.5中构建一个RESTful API客户端 我第一次开始使用旧的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做我能做的事情,
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])