如何在 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 中向请求正文添加文本的主要内容,如果未能解决你的问题,请参考以下文章

RestSharp 打印原始请求和响应标头

如何在 python 2 中向多部分电子邮件添加正文?

如何在 React Native 中向图像添加文本?

如何在fabricJS中向圆形对象添加文本?

如何使用restsharp下载文件

如何在 AfNetworking 3.0 中向请求添加标头?