REST | SOAP | WSDL

This page contains information on Remote Procedure Calls using XML

HTTP Request

GET /serverPageName HTTP/1.1
Accept: */*
Accept-Language: en
Accept-encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
<!-- REST -->
Host: http://SERVERADDRESS?PARAMETER1=VALUE&PARAMETER2=VALUE&PARAMETERn=VALUE

SOAP

POST /serverPageName HTTP/1.1
Accept: */*
Referer: CLIENTURLADDRESS
Accept-Language: en
Content-Type: application/x-www-form-urlencoded
Accept-encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Host: www.serverURL
Content-Length: NUMBER

<?xml version='1.0' encoding='UTF-8'?>
<env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'>
   <env:Header>
    <PREFIX:ELEMENT xmlns=PREFIX:'http://www.SOAPXML/Header'
                    env:mustUnderstand='true|false'
                    env:relay='true|false'
                    env:role='URL' />  
   </env:Header>
   <env:Body env:encodingStyle='http://www.w3.org/2003/05/soap-encoding'>

   <!-- SOAP XML REQUEST | RESPONSE --> 
   <ROOT xmlns='http://www.SOAPXML/Example'>
      <!-- XML content -->
   </ROOT>

   <!-- OR FAULT MESSAGE -->
   <env:Fault>
     <env:Code>
       <env:Value>VersionMisMatch|MustUnderstand|Sender|Receiver|DataEncodingUnknown</env:Value>
       <env:Subcode>
          <env:Value>ERROR SUBCODE</env:Value>
       </env:Subcode>
     </env:Code>
     <env:Reason>
       <env:Text xml:lang='en-US'>ERROR DESCRIPTION</env:Text>
     </env:Reason>
     <env:Detail>
        <!-- Application specific detail -->
     </env:Detail>
    </env:Fault>

   </env:Body>
</env:Envelope>

WSDL

<?xml version='1.0'?>
<definitions name='WEBSERVICENAME'
             targetNamespace='http://wwww.webservice.com/Name'
             xmlns:typens='http://wwww.webservice.com/Name'
             xmls:xsd='http://www.w3.org/2000/10/XMLSchema'
             xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
             xmlns='http://schemas.xmlsoap.org/wsdl/'>
<types>
   <xsd:schema xmlns=''
               xmlns:xsd='http://www.w3.org/2000/10/XMLSchema'
               targetNamespace='http://wwww.webservice.com/Name'>
     <xsd:complexType name='SERVICEREQUESTTYPE'>
       <xsd:sequence>
          <xsd:element name='RequestParameter1' type='xsd:string' />
          <xsd:element name='RequestParameter2' type='xsd:integer' />
       </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name='SERVICERESPONSETYPE'>
       <xsd:sequence>
          <xsd:element name='ResponseParameter1' type='xsd:string' />
       </xsd:sequence>
     </xsd:complexType>
   </xsd:schema>
</types>
<message name='SERVICEREQUESTMESSAGE'>
  <part name='SERVICEREQUEST' type='typens:SERVICEREQUESTTYPE' />
</message>
<message name='SERVICERESPONSEMESSAGE'>
  <part name='SERVICERESPONSE' type='typens:SERVICERESPONSETYPE' />
</message>
<portType name='SERVICEPORTTYPE'>
   <operation name='SERVICEREQUEST'>
      <input message='typens:SERVICEREQUESTMESSAGE' />
      <output message='typens:SERVICERESPONSEMESSAGE' />
   </operation>
</portType>
<binding name='SERVICEBINDING' type='typens:SERVICEPORTTYPE'>
   <soap:binding style='rpc|document' transport='http://schemas.xmlsoap.org/soap/http'/>
   <operation name='SERVICEREQUEST'>
     <soap:operation />
     <input>
       <soap:body use='encoded|literal'
                  encodingStyle='http://www.w3.org/2003/05/soap-encoding'
                  namespace='http://wwww.webservice.com/Name' />
     </input>
     <output>
       <soap:body use='encoded|literal'
                  encodingStyle='http://www.w3.org/2003/05/soap-encoding'
                  namespace='http://wwww.webservice.com/Name' />
     </output>
</binding>
<service name='SERVICE'>
  <port name='SERVICEPORT' binding='typens:SERVICEBINDING'>
    <soap:address location=''http://wwww.webservice.com/getService.asp' />
  </port>
</service>

HTTP Response

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Min, 28 Sept 2009 08:35:00 GMT
Content-Type: text/html
Last-Modified: 28 Aug 2009 08:35:00 GMT
Content-Length: NUMBER

<!-- XML CONTENT -->

Code Examples

Manage SOAP message

function PostSOAP ()
{
 var XMLDoc, xMLHTTP, sXML

 sXML = "SOAP REQUEST TEXT";
 <!-- sRequest="REST REQUEST URL"; -->
 XMLDoc = new ActiveXObject("MSXML.DOMDocument");
 XMLDoc.loadXML(sXML);

 XMLHTTP = new ActiveXObject("MSXML2.XMLHTTP");
 XMLHTTP.open("POST", "http://SERVERADDRESS", false);
 <!-- XMLHTTP.open("GET", sRequest, false); -->
 XMLHTTP.send(XMLDoc);
 <!-- XMLHTTP.responseText(XMLDoc); Returns HTTP body only

 XMLDoc=XMLHTTP.responseXML;

 alert(XMLDoc.text);
 alert(XMLDoc.XML);

 <!--  MANIPULATE XMLDoc -->
 sOutput = XMLDoc.selectSingleNode("//PREFIX:ELEMENT").text
 document.getElementByID("NAME").innerHTML = sOutput
}

Web service client using JavaScript, MSXML and XPath

<html>
<head>
<title>Web service Client</title>

<script type='text/javascript'>

var serviceURL='WEBSERVICEURL';
var parser_ID='Msxml2.DomDocument.4.0';
var requester_ID='Msxml2.XmlHttp.4.0';

function soaprequest(PARAMETER)
{
var xmlTemplate='<soap:Envelope '
+ 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
+ 'xmlns:xsd="http://www.w3.org/2001/XMLSchema" '
+ 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
+ '<soap:Body>'
+ '<ELEMENT1 xmlns="http://www.example.org/webservice">'
+ '<ELEMENT2 />'
+ '</ELEMENT1>'
+ '</soap:Body>'
+ '</soap:Envelope>';

var oDom = new ActiveXobject(parser_ID);
oDom.setProperty('SelectionLanguage', 'XPath');

var oHttpReq = newActiveXObject(requester_ID);
var bLoaded = oDom.loadXML(xmlTemplate);

if (bLoaded)
{
var sNamespaces="xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' "
+ "xmlsns:PREFIX='http://www.example.org/webservice'";
oDom.setProperty('SelectionNamespaces', sNamespaces);

var sXPath ='/soap:Envelope/soap:Body/PREFIX:ELEMENT1/PREFIX/ELEMENT2';
var oParameterNode = oDom.selectSingleNode(sXPath);
OParameterNode.text= PARAMETER;

oHttpReq.open('POST', serviceURL, false);
var sActionHeader = 'http://www.example.org/WSDLSoapActionAttribute';
oHttpReq.setRequestHeader('SOAPAction', sActionHeader);
OHttpReq.send(ODOm)

showRequestMessage(oDom.xml);

if (oHttpReq.status==200)
{
if (oHttpReq.responseXML)
{
showResponseMessage(oHttpReq.responseXML.xml);
oDom.load(oHttpReq.responseXML);
showResult(oDom);
}
else
{
showResponseMessage(oHttpReq.getAllResponseHeaders() + '\n'
+ oHttpReq.responseText);
}
else
{
showResponseMessage(oHttpReq.status + ": " + oHttpReq.statusText);
}
else
}
showResponseMessage(oDom.parserError.reason + '\n'
+ oDom.parseError.srcText);
}

oHttpReq = null;
oDom = null;
}

function showRequestMessage(sText)
{
var oText = document.getElementByID('request');
oText.value= sText;
}

function showResponseMessage(sText)
{
var oText = document.getElementByID('responset');
oText.value= sText;
}

function showResult(Dom)
{
var oDiv = document.getElementByID('divResult');
var sXPath='/soap:Envelope/soap:Body/PREFIX:ELEMENT3/PREFIX/ELEMENT4';
var colNodes = Dom.selectNodes(xSpath);
var iNodes = colNodes.length;
var sResult = '';
if (iNodes > 0)
{
for (var i=0; i<iNodes; i++)
{
var oResultNode = colNodes(i);
sResult=oResultNode.text);
}
else
{
sResult='No results returned';
}
oDiv.innerHTML=sResult;
}

function initiate()
{
document.getElementById('txtBoxName').focus();
}

</script>
</head>

<body onload='initiate();'>
<input type='text id='txtBoxName' size='VALUE' maxlength='VALUE'>
&nbsp;&nbsp;
<input type='button' value='TEXT' onclick='soaprequest(txBoxName.value);'>
<br />

<div id='divResult'></div>
<textarea id='request'></textarea>
<textarea id='response'></textarea>
</body>

</html>

Page tags: rest soap xml
page_revision: 9, last_edited: 1255420729|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License