我正在C# .NET 3.5中构建一个RESTful应用程序接口客户端。
我第一次开始使用老的HttpWebClient
(和HttpWebResponse
)构建它,我可以用它做任何我想做的事情。我很开心。我唯一被卡住的是从JSON响应中自动反序列化。
因此,我听说过一个名为RestSharp (104.1)的奇妙的库,它简化了JSON客户端的开发,并自动反序列化RESTful和XML响应。我在上面切换了我所有的代码,但现在我意识到我不能用HttpWebClient
和HttpWebResponse
做我能做的事情,比如访问和编辑原始请求正文。
有谁有解决方案吗?
编辑:我知道如何设置请求正文(使用 request.AddBody()
**),我的问题是,我想要获取此请求正文字符串,编辑它,然后在请求中重新设置它(动态更新请求正文)**
发布于 2013-05-27 16:32:24
请求主体是一种参数类型。要添加一个,您可以执行以下操作之一...
req.AddBody(body);
req.AddBody(body, xmlNamespace);
req.AddParameter("text/xml", body, ParameterType.RequestBody);
req.AddParameter("application/json", body, ParameterType.RequestBody);
要检索body参数,可以在req.Parameters
集合中查找Type
等于ParameterType.RequestBody
的项。
请参阅RestRequest
类here的代码。
下面是RestSharp docs on ParameterType.RequestBody
要说的话:
如果设置了此参数,它的值将作为请求的正文发送。参数的名称被忽略,其他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
对象的新副本。
https://stackoverflow.com/questions/16768314
复制相似问题