112

我正在尝试使用 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;
}
4

2 回答 2

231

以下是将纯 xml 字符串添加到请求正文的方法:

req.AddParameter("text/xml", body, ParameterType.RequestBody);

于 2011-03-22T15:28:07.340 回答
7

要添加到@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
});
于 2017-06-29T20:14:14.237 回答