Bereitstellung eines funktionalen SOAP-Clients mit SAAJ
Einführung
SOAP, der einfache Objektzugriff Protokoll, wird häufig für die Kommunikation von Webdiensten verwendet. Die Implementierung von SOAP-Clients in Java kann unkompliziert sein, insbesondere mit Hilfe des SAAJ-Frameworks (SOAP with Attachments API for Java). Dieser Artikel stellt ein funktionierendes Beispiel eines mit SAAJ erstellten SOAP-Clients vor und bietet Anleitungen zur Verwendung des Frameworks.
SAAJ für SOAP-Clients
SAAJ bietet einen umfassenden Satz von APIs zur Verarbeitung von SOAP-Nachrichten. Es ermöglicht Entwicklern das direkte Erstellen, Senden und Empfangen von SOAP-Nachrichten und bietet so Flexibilität bei der Interaktion mit Webdiensten. SAAJ ist Teil des Standard-Java SE und somit für Entwicklungszwecke leicht verfügbar.
Beispiel für einen funktionierenden SOAP-Client
Der folgende Codeausschnitt zeigt einen funktionsfähigen SOAP-Client, der SAAJ verwendet :
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; } }
Ausführen des Beispiels
Um dieses Beispiel auszuführen, platzieren Sie es in einer Datei namens SOAPClientSAAJ.java und kompilieren Sie es mit einem Java-Compiler. Führen Sie die kompilierte Klasse aus und sie ruft den im Code angegebenen Webdienst auf, um Informationen über die Stadt „New York“ abzurufen. Die Antwort wird auf der Konsole gedruckt.
Fazit
Dieser umfassende Artikel bietet Anleitungen zur Implementierung von SOAP-Clients in Java mithilfe des SAAJ-Frameworks. Das Arbeitsbeispiel, das einen SOAP-Client zeigt, der einen Webdienst aufruft, kann als Referenz für die Erstellung Ihrer eigenen SOAP-basierten Lösungen verwendet werden. Mithilfe der Funktionen von SAAJ können Entwickler robuste SOAP-Clients erstellen, die nahtlos mit verschiedenen Webdiensten interagieren.
Das obige ist der detaillierte Inhalt vonWie kann ich mit SAAJ einen funktionsfähigen SOAP-Client in Java erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!