Implementing Working SOAP Clients Using SAAJ
In Java, the Simple Object Access Protocol (SOAP) can be implemented using the SOAP with Attachments API for Java (SAAJ) framework. This framework allows developers to directly handle SOAP messages, rather than relying on third-party web service APIs.
Creating a SOAP Client with SAAJ
Below is an example of a working SOAP client implemented using SAAJ:
import javax.xml.soap.*; public class SOAPClientSAAJ { public static void main(String[] args) { 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 { SOAPPart soapPart = soapMessage.getSOAPPart(); String myNamespace = "myNamespace"; String myNamespaceURI = "http://www.webserviceX.NET"; SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.addNamespaceDeclaration(myNamespace, myNamespaceURI); 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(); // Send SOAP message to SOAP server SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(soapAction), soapEndpointUrl); // Print the SOAP response System.out.println("Response SOAP Message:"); soapResponse.writeTo(System.out); soapConnection.close(); } catch (Exception e) { System.err.println("Error occurred while sending SOAP Request to Server!"); e.printStackTrace(); } } private static SOAPMessage createSOAPRequest(String soapAction) throws Exception { MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); createSoapEnvelope(soapMessage); MimeHeaders headers = soapMessage.getMimeHeaders(); headers.addHeader("SOAPAction", soapAction); soapMessage.saveChanges(); return soapMessage; } }
The above is the detailed content of How to Build Functional SOAP Clients with SAAJ in Java?. For more information, please follow other related articles on the PHP Chinese website!