【问题标题】:Post XML as "application/xml" instead of "text/xml" via RestSharp通过 RestSharp 将 XML 发布为“application/xml”而不是“text/xml”
【发布时间】:2013-07-03 15:54:36
【问题描述】:

我正在使用RestSharp 连接到Salesforce Bulk API

当我使用AddBody 添加对象时:

var request = new RestRequest( Method.POST);
request.RequestFormat = DataFormat.Xml;
request.AddHeader("X-SFDC-Session", loginresult.SessionID);
var ji = new jobInfo { operation = "insert", @object = "contact", contentType = "CSV" };
request.AddBody(ji, xmlns);

Salesforce 拒绝它并显示以下错误消息:

不支持的内容类型:text/xml

...大概是因为 RestSharp 在幕后将 request.RequestFormat = DataFormat.Xml; 解释为“text/xml”。

通过摆弄 Salesforce API,我发现它需要“application/xml”而不是“text/xml”。

是否有支持的方式让 RestSharp 发送“application/xml”?

【问题讨论】:

    标签: c# web-services salesforce content-type restsharp


    【解决方案1】:

    来自文档here

    请求正文

    如果设置了这个参数,它的值将作为正文发送 要求。只接受一个 RequestBody 参数——第一个。

    参数名称将用作 Content-Type 标头 请求。

    所以:

    var ji = new jobInfo { operation = "insert", @object = "contact", contentType = "CSV" };
    
    var jiSerialized = /* Serialize ji to XML format */
    
    request.AddParameter(new Parameter
    {
        Name = "application/xml",
        Type = ParameterType.RequestBody,
        Value = jiSerialized 
    })
    

    【讨论】:

      【解决方案2】:

      作为@Paddy 提供的解决方案的替代方案,使用RestSharp 版本105.2.3,我发现以下内容会将请求的Content-Typetext/xml 更改为application/xml

      request.AddBody(ji, xmlns);
      request.Parameters[0].Name = "application/xml"; // default is "text/xml"
      

      执行上述操作后,我在 Visual Studio 调试器中看到的 request.Parameters[0] 如下所示:

      ContentType    null
      Name           "application/xml"
      Type           RequestBody
      Value          "<YourSerializedXmlDocHere>...</YourSerializedXmlDocHere>"
      

      如您所见,ContentType 为 null,这对我来说似乎有点麻烦。但正如@Paddy 所指出的,RestSharp 文档说“参数的名称 将用作请求的 Content-Type 标头。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        相关资源
        最近更新 更多