Dynamic invocation interface client  Chapter 10: Using the Web Services Toolkit Samples

Chapter 9: Developing Web Service Clients

Document style client

The previous client examples use different invocation modes to interact with RPC style Web services. To interact with document style Web services, the XML document must be defined in the client. The clients do not invoke the Web service by sending a discrete set of parameters and receiving return values as described in a WSDL document; instead, they send the parameter to the service as XML documents.


Document style example

This section contains document style client examples.

package client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.enum.Style;
import org.apache.axis.enum.Use;
import org.apache.axis.message.SOAPBodyElement;
import org.apache.axis.message.SOAPEnvelope;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.apache.axis.utils.XMLUtils;
import java.util.Vector;

public class DIIDocClient
{

    public static void main(String[] args)
    {
        try
        {
            /*
	* NOTE: The web service uses document style
	* eg:
	*<service name="MyDocSample" provider="java:RPC" style="document" use="literal">
	*/
            String url = "http://localhost:8080/ws/services/MyDocSample";
            Service service = new Service();
            Call call = (Call) service.createCall(); 
            call.setTargetEndpointAddress(url);
            String param= "hello";

	/*
	 *construct the XML document  
 	*/
            SOAPBodyElement[] input = new SOAPBodyElement[1];

            input[0] = new SOAPBodyElement(XMLUtils.StringToElement("http://www.w3.org/2001/XMLSchema", 
                "echo", param));
            Vector          elems = (Vector) call.invoke( input );

            SOAPBodyElement elem  = (SOAPBodyElement) elems.get(0);
            Element e = elem.getAsDOM();
            System.out.println("returned value: " + XMLUtils.ElementToString(e));        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }
}

In the above example, the XML in the request sent to the server is:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 
xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 	<soapenv:Body>
<xsd:echo>hello</xsd:echo>
</soapenv:Body>
</soapenv:Envelope>
 

If the example is RPC-style, the XML in the request sent to the server is:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 	<soapenv:Body>
  		<echo xmlns="">
   			<arg0 xsi:type="xsd:string">hello</arg0>
  		</echo>
 	</soapenv:Body>
</soapenv:Envelope>




Copyright © 2005. Sybase Inc. All rights reserved. Chapter 10: Using the Web Services Toolkit Samples