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; } }
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!