views:

73

answers:

1

I am fiddling around with JBOSS's Web Services, and I have created the following:

http://127.0.0.1:8080/IM/TestService?wsdl

Now I need to access Web Methods from that Web Service from JavaScript.

Say I have a web method named foo in TestService, how do I make an ajax call to it?

I tried accessing the method via http://127.0.0.1:8080/IM/TestService/foo, but I'm getting an HTTP Status 404.

A: 

I wrote the following JavaScript that will allow me to call the Web Methods from the JBoss Web Service.

Dependencies


var WS = function (url, ns, nsName) {
    return function (method, parameters, callback) {
        var i, j, para, soapBody = new SOAPObject(method), sr, response;
        soapBody.ns = {
            name: nsName,
            uri: ns
        };
        if (typeof parameters === "function") {
            callback = parameters;
        } else if (parameters && parameters.length) {
            for (i = 0, j = parameters.length; i < j; ++i) {
                para = parameters[i];
                soapBody.appendChild(new SOAPObject(para.name)).val(para.value);
            }
        }
        sr = new SOAPRequest(method, soapBody);
        SOAPClient.Proxy = url;
        SOAPClient.SendRequest(sr, function (r) {
            response = r.Body[0][method + "Response"][0]["return"][0]["Text"];
            if (callback) {
                callback.call(sr, response);
            }
        });
    }
};

Usage

var ws = WS("http://127.0.0.1:8080/IM/TestService", "http://wservices/", "ns2");

ws("foo", [{name: "name", value:"dreas"}], function (r) {
    console.log(r);
});

Disclaimer: This is still very much untested, so it can still blow up your computer

Andreas Grech