如何在 RestSharp 中向请求正文添加文本
Posted
技术标签:
【中文标题】如何在 RestSharp 中向请求正文添加文本【英文标题】:How to add text to request body in RestSharp 【发布时间】:2011-07-03 00:20:37 【问题描述】:我正在尝试使用 RestSharp 来使用 Web 服务。到目前为止,一切都很顺利(为 John Sheehan 和所有贡献者干杯!)但我遇到了障碍。假设我想以已经序列化的形式(即,作为字符串)将 XML 插入到我的 RestRequest 的正文中。是否有捷径可寻? .AddBody() 函数似乎在幕后进行序列化,所以我的字符串正在变成<String />
。
非常感谢任何帮助!
编辑:要求提供我当前代码的示例。见下文--
private T ExecuteRequest<T>(string resource,
RestSharp.Method httpMethod,
IEnumerable<Parameter> parameters = null,
string body = null) where T : new()
RestClient client = new RestClient(this.BaseURL);
RestRequest req = new RestRequest(resource, httpMethod);
// Add all parameters (and body, if applicable) to the request
req.AddParameter("api_key", this.APIKey);
if (parameters != null)
foreach (Parameter p in parameters) req.AddParameter(p);
if (!string.IsNullOrEmpty(body)) req.AddBody(body); // <-- ISSUE HERE
RestResponse<T> resp = client.Execute<T>(req);
return resp.Data;
【问题讨论】:
您当前的代码是什么样的?你在哪里有问题? 抱歉,直到现在才看到这个。你可能想要 AddParameter() 。如果这不是您想要的,请发布到 google 组,并附上您尝试实现的带有 params + xml 的正文示例。 groups.google.com/group/restsharp 【参考方案1】:以下是如何将纯 xml 字符串添加到请求正文:
req.AddParameter("text/xml", body, ParameterType.RequestBody)
;
【讨论】:
+1 同样,要添加纯 JSON,它是 req.AddParameter("text/json", body, ParameterType.RequestBody); 实际上,对于 Json 应该是(至少对于 Rails):req.AddParameter("application/json", body, ParameterType.RequestBody);
感谢 Jean Hominal 的提示 here
我如何将其设置为 html 编码字符串? IE。一大堆 val=2&val2=3 等
我认为 req.AddParameter("application/x-www-form-urlencoded", body, ParameterType.RequestBody);
我用的是最新版的RestSharp,这个方法签名不可用。【参考方案2】:
要添加到@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
);
【讨论】:
我试过这个,但我在 Name 参数中设置的内容实际上设置为 content-Type。所以对于 ContentType 和 Name,我都使用了“application/json”。 我试过这个并从 rest# 中得到一个空引用异常。在***.com/a/44281853/109736 找到了解决方案 @JasonCoder 感谢您的评论。是否也是相同的版本,v105.2.3?我与更高版本的结果好坏参半是我问的原因。它现在在 106 上,可能操作不一样。 @GibralterTop 我的结果是 106.6.9以上是关于如何在 RestSharp 中向请求正文添加文本的主要内容,如果未能解决你的问题,请参考以下文章