对于我的生活,我无法弄清楚为什么这个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>
答案 0 :(得分:0)
答案很难从问题中提供的信息中得出,但是如果有人遇到类似问题,我将分享我的答案:
我试图用自定义命名空间替换SOAP生成的tempuri.org命名空间,上面用&#34; xmlns:test =&#34; http://XXX.YYYY.com/" 。唯一的问题是我没有告诉那些首先设置Web服务的人,他们也不知道你不应该在生产中使用tempuri.org。所以问题基本上就是tempuri.org是Web服务认可的唯一命名空间。
我解决了他们不知道自己有的问题,他们让我设置了自定义命名空间,现在应用程序正常工作!