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.
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. |
|
|