我试图从外部服务器获取一些信息并执行以下操作:
var xmlHttp = SOAPClient._getXmlHttp();
xmlHttp.open("GET", url + "?wsdl", async);
其中xmlHTTP内容:
onabort: null
onerror: null
onload: null
onloadend: null
onloadstart: null
onprogress: null
onreadystatechange: null
ontimeout: null
readyState: 1
response: ""
responseText: ""
responseType:""
responseURL: ""
responseXML: null
status: 0
statusText: ""
timeout: 0
upload: XMLHttpRequestUpload
withCredentials: false
__proto__: XMLHttpRequest
已返回preveous XMLHttpRequest的和SOAPClient._getXmlHttp是
function()
{
try
{
if(window.XMLHttpRequest)
{
var req = new XMLHttpRequest();
if(req.readyState == null)
{
req.readyState = 1;
req.addEventListener("load",
function()
{
req.readyState = 4;
if(typeof req.onreadystatechange == "function")
req.onreadystatechange();
},
false);
}
return req;
}
if(window.ActiveXObject)
return new ActiveXObject(SOAPClient._getXmlHttpProgID());
}
catch (ex) {}
throw new Error("Your browser does not support XmlHttp objects");
}
所以最后尝试打开xmlHttp我得到以下内容:
主线程上的同步XMLHttpRequest因不推荐使用 它对最终用户的体验产生不利影响。如需更多帮助, 检查http://xhr.spec.whatwg.org/
async
是false
UPD :
我想它不能得到wsdl,但就我在js中的愚蠢而言,我无法弄清楚我是否正确,因为xmlHttp.responseXML
没有我预料到的根据我使用soap和wsdl的经验。所以最后我得到了内部服务器错误,虽然当我使用SoapUI时我得到wsdl并获得运行良好的方法
UPD1 :这是函数发送请求的扩展代码:
var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
// build SOAP request
var sr = "soap request here";
// send request
var xmlHttp = SOAPClient._getXmlHttp();
xmlHttp.open("POST", url, async);
var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + method;
xmlHttp.setRequestHeader("SOAPAction", soapaction);
xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttp.send(sr);
soap请求是正确的,使用SoapUI执行返回正确的数据,但是从我的js app处理它会给出异常
很明显,该文本的主要部分会记录到我的js app中的位置,但是选项https:' https地址' 500(内部 服务器错误)SOAPClient._sendSoapRequest @ soapclient.js:198SOAPClient._onLoadWsdl @ soapclient.js:162SOAPClient._loadWsdl @ soapclient.js:156SOAPClient.invoke @ soapclient.js:129Adapter.query @ adapter.js:108Model.findAll @ model.js:49Organisation.init @ organisation.js:8(匿名函数)@ bootstrap.js:14each @ jquery.min.js:2each @jquery.min.js:2(匿名函数)@ bootstrap.js:9j @jquery.min.js:2fireWith @jquery.min.js:2ready @ jquery.min.js:2K @jquery.min.js:2
选项https:' https地址' 500(内部 服务器错误)
我发现可能的解决方案是更改Apache的httpd.conf(外部服务器所在的位置)而不是
AllowOverride All 选项无
对于当前域,到
AllowOverride All 选项全部
但这没有帮助。