我是HTML开发的新手。 我正在使用phonegap-HTML5开发移动应用程序。 我想调用一个用JAVA编写的Web服务返回SOAP消息。 我使用XmlHttp reguest调用我的webservice,但执行时返回null数据和状态为0。 所以,我的问题是如何在HTML页面中调用webservice? 如何从HTML页面调用Java SOAP Web服务?
请任何帮助表示赞赏。 请尽快建议任何方法。 提前谢谢。
答案 0 :(得分:0)
您需要在js文件中发出soap请求。
在你的js文件中你应该有这样的东西:
function sendSOAPRequest(webServiceMethod, params, callbackMethod, isAsynchronous, callContext)
{
//Get the token from local storage
var token = window.localStorage.getItem("token");
//Get the soap envelope with given parameters
var soapEnvelope = getEnvelopeFromParam(webServiceMethod, params);
//Send the soap request
$.ajax({
url: "https://www.zzz.com/yyy/soap",
type: "POST",
dataType: "xml",
data: soapEnvelope,
context: callContext,
complete: callbackMethod,
async: isAsynchronous,
timeout: 60000,
contentType: "text/xml; charset=\"utf-8\"",
beforeSend: function (xhr) {
xhr.setRequestHeader('SOAPAction', 'http://zzz.com/yyy/uuu/Iooo/' + webServiceMethod);
xhr.setRequestHeader('Authorization', token);
}
});
}
function getEnvelopeFromParam(webServiceMethod, parameters)
{
var soapEnvelope = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><' + webServiceMethod + ' xmlns="http://zzz.com/yyy/uuu">';
$.each(parameters, function(key, value) {
if(value)
{
soapEnvelope += '<' + key + '>' + value + '</' + key + '>';
}
else
{
//Send a null value
soapEnvelope += '<' + key + ' i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>';
}
});
soapEnvelope += '</' + webServiceMethod + '></s:Body></s:Envelope>';
return soapEnvelope;
}
这是一种调用webservice的方法。您可以指定与服务器对应的正确地址。
现在在你的html中加入这个js文件
<script type="text/javascript" src="myFile.js"></script>
现在你必须从你的html页面调用你的js函数(例如)
sendSOAPRequest("myfunction", params, endFunction, true, this);
你必须定义endFunction
function endFunction(xmlHttpRequest, status)
{
//Work with xmlHttpRequest and check status
}