If you are a web developer, you may have found many occasions you have to create simple mashups for your web site. There you call web services or data services to fill the content of the web page. Most of the time we call web services from a server side script, since there are many server side technologies like Java, PHP, .NET support web services.
But sometime it is in vain that you call your server scripts for a simple web service request. In fact You can use the famous XMLHttpRequest object to do the same thing from the client side itself. But you may need to prepare the complete SOAP envelope (Yea with SOAP headers, if required) in your hand to send it through XMLHttpRequest.
Another option is to use the WSRequest script (http://mooshup.com/js/wso2/WSRequest.js). We normally use this script in the WSO2 Mashup Server to call the mashups designed in the serverside using stub. (The server side mashup is also mostly written in Javascript). We can use this script stand alone to call remote web services as well.
It introduce you the WSRequest class. It is exactly similar to the famous XMLHttpRequest class we used in AJAX. In stead of plain message over HTTP like in the case of XMLHttpRequest, WSRequest send and receive messages in SOAP form. Here is its API in brief.
var WSRequest = function() { //---------------------------------------------------- // the public properties - equivalent to XMLHTTPRequest //----------------------------------------------------- this.readyState = 0; this.responseText = null; this.responseXML = null; this.error = null; // equivalent to httpErrorCode this.onreadystatechange = null; this.proxyAddress = null; this.proxyEngagedCallback = null } //---------------------------------------------------- // the public operations - equivalent to XMLHTTPRequest //----------------------------------------------------- /** * @description Prepare a Web Service Request . * @method open * @param {hash} options, * possible options: possible values for the option * useSOAP : false/true/1.1/1.2 * useWSA : true/false/1.0/submission * useWSS : true/false (only for usernametoken & timestamp) * * @param {string} URL * @param {boolean} asyncFlag * @param {string} username * @param {string} password */ WSRequest.prototype.open = function(options, URL, asnycFlag, username, password) {.. } /** * @description Send the payload to the Web Service. * @method send * @param {dom} response xml payload */ WSRequest.prototype.send = function(payload) {.. }
I wrote a simple javascript/html demo which calls the data service that I published for my blog. This service is written using WSF/PHP Data Services. Check the demo and client, service sources from the following links.
AJAX Tag Search | Demo | WSDL | Client | Service | Demonstrates how you use SOAP Data Services using WSRequest object to retrieve the data asynchronously from javascript |
There You can see, how easy to write an AJAX like page for call web services using the WSRequest javascript class.
Pingback: Calling Simple Web Services From Javascript | PHP-Blog.com
Pingback: Security Considerations in Firefox When Accessing Different Domains | Dimuthu's Blog