在HTML页面中调用Java SOAP Web服务

时间:2013-12-06 13:13:18

标签: html web-services soap cordova xmlhttprequest

我是HTML开发的新手。 我正在使用phonegap-HTML5开发移动应用程序。 我想调用一个用JAVA编写的Web服务返回SOAP消息。 我使用XmlHttp reguest调用我的webservice,但执行时返回null数据和状态为0。 所以,我的问题是如何在HTML页面中调用webservice? 如何从HTML页面调用Java SOAP Web服务?

请任何帮助表示赞赏。 请尽快建议任何方法。 提前谢谢。

1 个答案:

答案 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
}