SOAP和Ajax无法协同工作

时间:2014-12-08 17:55:05

标签: jquery ajax web-services soap

对于我的生活,我无法弄清楚为什么这个Ajax SOAP请求不起作用。

这主要是我在此处找到的代码版本: jQuery AJAX SOAP based web services and CORS (cross origin resource sharing)

运行该函数时,它会在控制台中返回500错误。该错误返回XML,包括以下错误:

<faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring>

服务器错误日志中没有显示任何内容。我用来生成该请求的XML是由SOAP UI创建的,并返回正确的信息而没有任何错误。

其他信息:服务器标头已正确设置,我可以返回整个XML服务,没有跨域问题。只有在我尝试发送由&#34; se&#34;表示的查询时才会这样。变量,我有麻烦。我已尝试使用&#39;?WSDL&#39;既存在又不存在。我也尝试过使用POST和GET(虽然很确定POST是使用的)。

<script type="text/javascript">
        var se = '';
        se += '<?xml version="1.0" encoding="UTF-8" standalone="no"?>';
        se += '<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/soap/envelope/" xmlns:test="http://XXX.YYYY.com/">';
        se += '<soapenv:Header/>';
        se += '<soapenv:Body>';
        se += '<test:GetCurrentProductRelease/>';
        se += '</soapenv:Body>';
        se += '</soapenv:Envelope>';

                $.ajax({
                url: 'http://xx.xx.xxx.xxxx/XXXAdminDS/XXXAdminDS.asmx?WSDL',
                type: "POST",
                    dataType: "xml",
                    data: se,
                    crossDomain: true,
                    headers: {"X-Requested-With": "XMLHttpRequest"},
                    beforeSend: function(xhr) {
                        xhr.setRequestHeader("SOAPAction", "http://xx.xx.xxx.xxx/XXXAdminDS/XXXAdminDS.asmx?WSDL");
                    },

                    // success: function(xml) {
                    //   some code here
                    // },

                    // failure: function(xml) {
                    //   more code here
                    // },

                    contentType: "charset=UTF-8"
                });
            }
        </script>

1 个答案:

答案 0 :(得分:0)

答案很难从问题中提供的信息中得出,但是如果有人遇到类似问题,我将分享我的答案:

我试图用自定义命名空间替换SOAP生成的tempuri.org命名空间,上面用&#34; xmlns:test =&#34; http://XXX.YYYY.com/" 。唯一的问题是我没有告诉那些首先设置Web服务的人,他们也不知道你不应该在生产中使用tempuri.org。所以问题基本上就是tempuri.org是Web服务认可的唯一命名空间。

我解决了他们不知道自己有的问题,他们让我设置了自定义命名空间,现在应用程序正常工作!