首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用RestSharp访问HTTP请求体?

如何使用RestSharp访问HTTP请求体?
EN

Stack Overflow用户
提问于 2013-05-27 15:28:43
回答 1查看 33.3K关注 0票数 23

我正在C# .NET 3.5中构建一个RESTful应用程序接口客户端。

我第一次开始使用老的HttpWebClient (和HttpWebResponse)构建它,我可以用它做任何我想做的事情。我很开心。我唯一被卡住的是从JSON响应中自动反序列化。

因此,我听说过一个名为RestSharp (104.1)的奇妙的库,它简化了JSON客户端的开发,并自动反序列化RESTful和XML响应。我在上面切换了我所有的代码,但现在我意识到我不能用HttpWebClientHttpWebResponse做我能做的事情,比如访问和编辑原始请求正文。

有谁有解决方案吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-27 16:32:24

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

代码语言:javascript
复制
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的项。

请参阅RestRequesthere的代码。

下面是RestSharp docs on ParameterType.RequestBody要说的话:

如果设置了此参数,它的值将作为请求的正文发送。参数的名称被忽略,其他RequestBody参数也被忽略-只接受1。

RequestBody只适用于POST或PUT请求,因为只有它们才真正发送正文。

如果您还有GetOrPost参数,它们将覆盖RequestBody - RestSharp不会将它们组合在一起,而是会丢弃RequestBody参数。

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

代码语言:javascript
复制
var body = req.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody);
if (body != null)
{
    Console.WriteLine("CurrentBody={0}", body.Value);
    body.Value = "NewBodyValue";
}

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

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16768314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档