Javascript XMLHttpRequest失败,错误代码415:无法处理该消息

Javascript XMLHttpRequest失败,错误代码415:无法处理该消息,javascript,soap,dynamics-crm-2015,Javascript,Soap,Dynamics Crm 2015,我在CRM 2015在线环境中工作。我正在尝试从HTML Webressource触发CRM工作流。HTML Webressource由JavaScript Webressource打开 我的问题:运行以下代码后,我收到以下错误消息: 加载资源失败:服务器响应状态为415(无法处理消息,因为内容类型“text/xml;charset=UTF-8”不是预期的类型“application/soap+xml;charset=UTF-8”) 这是我的代码: function runWorkflow()

我在CRM 2015在线环境中工作。我正在尝试从HTML Webressource触发CRM工作流。HTML Webressource由JavaScript Webressource打开

我的问题:运行以下代码后,我收到以下错误消息: 加载资源失败:服务器响应状态为415(无法处理消息,因为内容类型“text/xml;charset=UTF-8”不是预期的类型“application/soap+xml;charset=UTF-8”)

这是我的代码:

function runWorkflow()
{
    var entityId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; //Guid of record that workflow is to run on.
    var workflowId = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; //Workflow Guid.
    var url = window.parent.Xrm.Page.context.getClientUrl();

    var OrgServicePath = "/XRMServices/2011/Organization.svc";
    url = url + OrgServicePath;
    var request;
    request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
    "<s:Body>" +
    "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
      "<request i:type=\"b:ExecuteWorkflowRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">" +
        "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">" +
          "<a:KeyValuePairOfstringanyType>" +
            "<c:key>EntityId</c:key>" +
            "<c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + entityId + "</c:value>" +
          "</a:KeyValuePairOfstringanyType>" +
          "<a:KeyValuePairOfstringanyType>" +
            "<c:key>WorkflowId</c:key>" +
            "<c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + workflowId + "</c:value>" +
          "</a:KeyValuePairOfstringanyType>" +
        "</a:Parameters>" +
        "<a:RequestId i:nil=\"true\" />" +
        "<a:RequestName>ExecuteWorkflow</a:RequestName>" +
      "</request>" +
    "</Execute>" +
    "</s:Body>" +
    "</s:Envelope>";

    var req = new XMLHttpRequest();
    req.open("POST", url, true)
    // Responses will return XML. It isn't possible to return JSON.
    req.setRequestHeader("Accept", "application/xml, text/xml, */*");
    req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
    req.onreadystatechange = function () { assignResponse(req); };
    req.send(request);
}
函数runWorkflow()
{
var entityId=“XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”;//要运行工作流的记录的Guid。
var workflowId=“XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”;//工作流Guid。
var url=window.parent.Xrm.Page.context.getClientUrl();
var OrgServicePath=“/XRMServices/2011/Organization.svc”;
url=url+OrgServicePath;
var请求;
request=“”+
"" +
"" +
"" +
"" +
"" +
“EntityId”+
“”+entityId+“”+
"" +
"" +
“WorkflowId”+
“”+workflowId+“”+
"" +
"" +
"" +
“ExecuteWorkflow”+
"" +
"" +
"" +
"";
var req=新的XMLHttpRequest();
请求打开(“POST”、url、true)
//响应将返回XML。不可能返回JSON。
setRequestHeader(“接受”、“应用程序/xml、文本/xml、*/*”);
请求setRequestHeader(“内容类型”,“文本/xml;字符集=utf-8”);
请求setRequestHeader(“SOAPAction”http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
req.onreadystatechange=函数(){assignResponse(req);};
请求发送(请求);
}
在我做了一些研究之后,我发现了以下文本:

这通常是客户机/服务器绑定中的不匹配,其中 服务中的消息版本使用SOAP 1.2(期望 应用程序/soap+xml),客户端中的版本使用soap 1.1 (它发送text/xml)。WSHttpBinding使用SOAP 1.2,BasicHttpBinding 使用SOAP 1.1

因此,我不太确定如何解决我的问题。有人找到解决方案了吗?

虽然您似乎从internet上删除了代码,但您也对其进行了一些细微的更改:您从Organization.svc URL的末尾删除了/web。重要的是要理解两者之间的区别

MSDN解释了以下方面的差异:

与web资源的REST端点不同,SOAP端点使用 组织服务。这与编写时使用的服务相同 存在于Microsoft Dynamics CRM 2015之外的应用程序 应用区别在于:

  • 请求被发送到不同的服务器 URL:/XRMServices/2011/Organization.svc/web