본문 바로가기

카테고리 없음

SOAP Client in java

Reference : http://harryjoy.com/2011/10/20/soap-client-in-java/

Require JAR : javax.activation.jar, saaj-impl-1.3.2.jar, javax-xml-soap-1.6.0.jar, jdom-1.1.jar, XmlSchema-1.4.7.jar



package soapClientPackage;

 

 

import javax.xml.soap.*;

import javax.xml.transform.*;

import javax.xml.transform.stream.*;

 

public class SoapClient {

 

    /**

     * Starting point for the SAAJ - SOAP Client Testing

     */

    public static void main(String args[]) {

        try {

            // Create SOAP Connection

            SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();

            SOAPConnection soapConnection = soapConnectionFactory.createConnection();

 

            // Send SOAP Message to SOAP Server

            String url = "http://www.webservicex.net/geoipservice.asmx";

            SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(), url);

 

            // Process the SOAP Response

            printSOAPResponse(soapResponse);

 

            soapConnection.close();

        } catch (Exception e) {

            System.err.println("Error occurred while sending SOAP Request to Server");

            e.printStackTrace();

        }

    }

 

    private static SOAPMessage createSOAPRequest() throws Exception {

        MessageFactory messageFactory = MessageFactory.newInstance();

        SOAPMessage soapMessage = messageFactory.createMessage();

        SOAPPart soapPart = soapMessage.getSOAPPart();

 

        String serverURI = "http://www.webservicex.net/";

 

        // SOAP Envelope

        SOAPEnvelope envelope = soapPart.getEnvelope();

        envelope.addNamespaceDeclaration("web", serverURI);

 

        /*

        Constructed SOAP Request Message:

        <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:example="http://www.webservicex.net/">

            <SOAP-ENV:Header/>

            <SOAP-ENV:Body>

                <web:GetGeoIP>

                    <web:IPAddressl>192.168.1.2</web:IPAddress>

                    <web:LicenseKey>123</web:LicenseKey>

                </web:GetGeoIP>

            </SOAP-ENV:Body>

        </SOAP-ENV:Envelope>

         */

 

        // SOAP Body

        SOAPBody soapBody = envelope.getBody();

        SOAPElement soapBodyElem = soapBody.addChildElement("GetGeoIP", "web");

        SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("IPAddress", "web");

        soapBodyElem1.addTextNode("192.168.1.2");

        //example of adding another element    

          //SOAPElement soapBodyElem2 = soapBodyElem.addChildElement("LicenseKey", "web");

          //soapBodyElem2.addTextNode("123");

 

         

        MimeHeaders headers = soapMessage.getMimeHeaders();

        headers.addHeader("SOAPAction", serverURI  + "GetGeoIP");

 

        soapMessage.saveChanges();

 

        /* Print the request message */

        System.out.print("Request SOAP Message = ");

        soapMessage.writeTo(System.out);

        System.out.println();

 

        return soapMessage;

    }

 

    /**

     * Method used to print the SOAP Response

     */

    private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {

        TransformerFactory transformerFactory = TransformerFactory.newInstance();

        Transformer transformer = transformerFactory.newTransformer();

        Source sourceContent = soapResponse.getSOAPPart().getContent();

        System.out.print("\nResponse SOAP Message = ");

        StreamResult result = new StreamResult(System.out);

        transformer.transform(sourceContent, result);

    }

 

}