Home > Java > javaTutorial > body text

How can I create a functional SOAP client in Java using SAAJ?

Linda Hamilton
Release: 2024-11-07 13:59:02
Original
689 people have browsed it

How can I create a functional SOAP client in Java using SAAJ?

Providing a Functional SOAP Client Using SAAJ

Introduction

SOAP, the Simple Object Access Protocol, is widely used for web services communication. Implementing SOAP clients in Java can be straightforward, especially with the help of the SAAJ (SOAP with Attachments API for Java) framework. This article presents a working example of a SOAP client created with SAAJ and provides guidance for utilizing the framework.

SAAJ for SOAP Clients

SAAJ offers a comprehensive set of APIs for handling SOAP messages. It enables developers to directly create, send, and receive SOAP messages, providing flexibility in interacting with web services. SAAJ is part of the standard Java SE, making it readily available for development purposes.

Working SOAP Client Example

The following code snippet showcases a functional SOAP client using SAAJ:

import javax.xml.soap.*;

public class SOAPClientSAAJ {

    // SAAJ - SOAP Client Testing
    public static void main(String args[]) {
        // SOAP Endpoint URL and SOAP Action
        String soapEndpointUrl = "http://www.webservicex.net/uszip.asmx";
        String soapAction = "http://www.webserviceX.NET/GetInfoByCity";

        callSoapWebService(soapEndpointUrl, soapAction);
    }

    private static void createSoapEnvelope(SOAPMessage soapMessage) throws SOAPException {
        // Namespace and URI
        String myNamespace = "myNamespace";
        String myNamespaceURI = "http://www.webserviceX.NET";

        // SOAP Envelope
        SOAPPart soapPart = soapMessage.getSOAPPart();
        SOAPEnvelope envelope = soapPart.getEnvelope();
        envelope.addNamespaceDeclaration(myNamespace, myNamespaceURI);

        // SOAP Body
        SOAPBody soapBody = envelope.getBody();
        SOAPElement soapBodyElem = soapBody.addChildElement("GetInfoByCity", myNamespace);
        SOAPElement soapBodyElem1 = soapBodyElem.addChildElement("USCity", myNamespace);
        soapBodyElem1.addTextNode("New York");
    }

    private static void callSoapWebService(String soapEndpointUrl, String soapAction) {
        try {
            // Create SOAP Connection
            SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
            SOAPConnection soapConnection = soapConnectionFactory.createConnection();

            // SOAP Message and SOAP Request
            SOAPMessage soapRequest = createSOAPRequest(soapAction);

            // Send SOAP Message and Receive Response
            SOAPMessage soapResponse = soapConnection.call(soapRequest, soapEndpointUrl);

            // Print Response
            soapResponse.writeTo(System.out);

            // Close Connection
            soapConnection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static SOAPMessage createSOAPRequest(String soapAction) throws Exception {
        // Message Factory and SOAP Message
        MessageFactory messageFactory = MessageFactory.newInstance();
        SOAPMessage soapMessage = messageFactory.createMessage();

        // Create Soap Envelope
        createSoapEnvelope(soapMessage);

        // Set MIME Headers and Soap Action
        MimeHeaders headers = soapMessage.getMimeHeaders();
        headers.addHeader("SOAPAction", soapAction);

        // Save Changes and Print Request
        soapMessage.saveChanges();
        soapMessage.writeTo(System.out);

        return soapMessage;
    }

}
Copy after login

Running the Example

To run this example, place it in a file named SOAPClientSAAJ.java and compile it using a Java compiler. Execute the compiled class, and it will call the web service specified in the code to retrieve information about the city "New York." The response will be printed on the console.

Conclusion

This comprehensive article provides guidance on implementing SOAP clients in Java using the SAAJ framework. The working example showcasing a SOAP client calling a web service can be used as a reference for building your own SOAP-based solutions. Leveraging the capabilities of SAAJ, developers can create robust SOAP clients that interact seamlessly with various web services.

The above is the detailed content of How can I create a functional SOAP client in Java using SAAJ?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!