我正在用JS創建一個SOAP客戶端,這是我第一次使用web服務,並且我的代碼中必須有幾個錯誤。創建一個JavaScript SOAP客戶端
poit是,用我的代碼,我無法訪問到WebService,但我不知道如何訪問裏面的方法。所以web服務給我以下的迴應:
<h1>Version</h1>
<p>Hi there, this is an AXIS service!</p>
<i>Perhaps there will be a form for invoking the service here...</i>
而不是正在調用的方法正確的XML。
這是我的SOAP客戶端的代碼:
<html>
<script type="text/javascript">
function run(){
var objXMLHttpRequest = new XMLHttpRequest();
objXMLHttpRequest.open("GET", "http://localhost:8080/CrunchifyWS/services/Version?wdsl/", true);
objXMLHttpRequest.onreadystatechange = function() {
//alert(objXMLHttpRequest.readyState+" "+ objXMLHttpRequest.status);
if (objXMLHttpRequest.readyState == 4 && objXMLHttpRequest.status == 200) {
result = objXMLHttpRequest.responseXML;
alert(objXMLHttpRequest.responseText);
alert(objXMLHttpRequest.responseXML);
}
}
objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
var packet = '<?xml version="1.0" encoding="utf-8" ?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><getVersion xmlns="http://service.web.com.crunchify/"></getVersion></soap:Body></soap:Envelope>';
objXMLHttpRequest.send(packet);
// Add mentioned below code only if your application calls webservice synchronously. Otherwise use "onreadystatechange" process response.
response = objXMLHttpRequest.responseXML;
alert(objXMLHttpRequest.responseText+ " "+ response);
}
</script>
<head>
</head>
<body>
<button onclick="run()">Dale!</button>
</body>
</html>
我認爲TE的錯誤應該是在部分,但是,正如我所說,這是我第一次,我不知道我正在做。
解決
我對角讀取,但嘗試「POST」而不是「GET」?大多數肥皂終點是僅郵政。 – nablex 2015-04-01 10:05:11
當嘗試POST而不是GET我有 <?xml version =「1.0」encoding =「UTF-8」?> NS1:Client.NoSOAPAction 沒有SOAPAction頭 faultstring> WebServices-PC ns2:hostname> soapenv:Fault> soapenv :Body> soapenv:Envelope> –
LokiNkc
2015-04-01 10:12:19
是的,在SOAP 1.1版本中,您需要添加一個soapaction。這個soapaction可以從WSDL中獲取,並且必須作爲HTTP頭傳入。 – nablex 2015-04-01 10:15:47