.net 如何在RestSharp中向请求正文添加文本

.net 如何在RestSharp中向请求正文添加文本,.net,xml,restsharp,.net,Xml,Restsharp,我正在尝试使用RestSharp来使用web服务。到目前为止,一切进展顺利(为约翰·希恩和所有贡献者干杯!),但我遇到了一个障碍。假设我想以已经序列化的形式(例如,作为字符串)将XML插入RestRequest的主体中。有没有一个简单的方法可以做到这一点?似乎.AddBody()函数在场景后面执行序列化,因此我的字符串被转换为 非常感谢您的帮助 编辑:请求了我当前代码的示例。见下文-- private T ExecuteRequest(字符串资源, RestSharp.方法httpMethod,

我正在尝试使用RestSharp来使用web服务。到目前为止,一切进展顺利(为约翰·希恩和所有贡献者干杯!),但我遇到了一个障碍。假设我想以已经序列化的形式(例如,作为字符串)将XML插入RestRequest的主体中。有没有一个简单的方法可以做到这一点?似乎.AddBody()函数在场景后面执行序列化,因此我的字符串被转换为

非常感谢您的帮助

编辑:请求了我当前代码的示例。见下文--

private T ExecuteRequest(字符串资源,
RestSharp.方法httpMethod,
IEnumerable参数=null,
字符串体=null),其中T:new()
{
RestClient=newrestclient(this.BaseURL);
RestRequest req=新的RestRequest(资源,httpMethod);
//将所有参数(和主体,如果适用)添加到请求中
req.AddParameter(“api_键”,this.APIKey);
if(参数!=null)
{
foreach(参数中的参数p)请求AddParameter(p);
}

如果(!string.IsNullOrEmpty(body))req.AddBody(body);//以下是如何将普通xml字符串添加到请求正文:


req.AddParameter(“text/xml”,body,ParameterType.RequestBody)

要添加到@dmitreyg的答案中,并根据@jrahhali对其答案的评论,在当前版本中,截至发布时,它是
v105.2.3
,语法如下:

request.Parameters.Add(new Parameter() { 
    ContentType = "application/json", 
    Name = "JSONPAYLOAD", // not required 
    Type = ParameterType.RequestBody, 
    Value = jsonBody
});

request.Parameters.Add(new Parameter() { 
    ContentType = "text/xml", 
    Name = "XMLPAYLOAD", // not required 
    Type = ParameterType.RequestBody, 
    Value = xmlBody
});

您当前的代码是什么样子的?您在其中遇到了什么问题?抱歉,直到现在才看到这一点。您可能需要AddParameter()。如果这不是您想要的,请将您试图实现的带有params+xml的正文示例发布到google组中。+1同样,要添加纯JSON,它是req.AddParameter(“text/json”,body,ParameterType.RequestBody);实际上,对于json,它应该是(至少对于Rails):
req.AddParameter(“application/json”,body,ParameterType.RequestBody)
感谢Jean-Homeial的提示,我如何将其设置为一个HTML编码的字符串?例如,一个大的get val=2&val2=3等。我认为req.AddParameter(“application/x-www-form-urlencoded”,body,ParameterType.RequestBody);我使用的是最新版本的RestSharp,此方法签名不可用。我尝试了此方法,但在Name参数中设置的任何内容实际上都设置为content Type。因此,对于ContentType和Name,我都使用了“application/json”“。我尝试了这个,从rest中得到了一个空引用异常。#在@JasonCoder中找到了一个解决方案,谢谢你的评论。它也是同一个版本吗,v105.2.3?我问的原因是,我与更高版本的结果不一致。它现在在106上,可能运行不一样。@Gibralttop我的结果是106.6.9。”
request.Parameters.Add(new Parameter() { 
    ContentType = "application/json", 
    Name = "JSONPAYLOAD", // not required 
    Type = ParameterType.RequestBody, 
    Value = jsonBody
});

request.Parameters.Add(new Parameter() { 
    ContentType = "text/xml", 
    Name = "XMLPAYLOAD", // not required 
    Type = ParameterType.RequestBody, 
    Value = xmlBody
});