C# 将XML发布为";“应用程序/xml”;而不是",;text/xml“;维亚雷斯夏普酒店

C# 将XML发布为";“应用程序/xml”;而不是",;text/xml“;维亚雷斯夏普酒店,c#,web-services,salesforce,content-type,restsharp,C#,Web Services,Salesforce,Content Type,Restsharp,我正迷上那辆车 使用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 = "

我正迷上那辆车

使用
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”

通过摆弄SalesforceAPI,我发现它想要“application/xml”而不是“text/xml”

是否有一种受支持的方法使RestSharp改为发送“application/xml”?

请求主体

如果设置了此参数,则其值将作为 要求只接受一个RequestBody参数–第一个

参数的名称将用作的内容类型标头 请求

因此:


作为使用RestSharp版本105.2.3提供的解决方案的替代方案,我发现以下内容将请求的
内容类型
text/xml
更改为
application/xml

request.AddBody(ji, xmlns);
request.Parameters[0].Name = "application/xml"; // default is "text/xml"
以下是在执行上述操作后,我在Visual Studio调试器中看到的
request.Parameters[0]

ContentType为空
名称“application/xml”
类型请求主体
值“…”
正如您所看到的,
ContentType
为空,这对我来说似乎有点麻烦。但正如@Paddy所指出的,RestSharp文档表示“参数的名称将用作请求的内容类型头。”

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