首頁 >Java >java教程 >如何使用 Java 中的 SAAJ 建立一個可用的 SOAP 用戶端?

如何使用 Java 中的 SAAJ 建立一個可用的 SOAP 用戶端?

DDD
DDD原創
2024-11-13 11:24:02833瀏覽

How can you create a working SOAP client using SAAJ in Java?

工作SOAP 用戶端範例

簡介

SOAP 是一種廣泛使用的協議,用於透過Web 交換基於XML 的訊息。實現 SOAP 用戶端可能是一項具有挑戰性的任務,特別是對於初學者而言。本文旨在利用 SAAJ(適用於 Java 的附件 API 的 SOAP)框架提供一個簡單而實用的 Java SOAP 用戶端工作範例。

SAAJ:適用於 Java 的具有附件 API 的 SOAP

SAAJ 是 Java 中用於直接處理 SOAP 訊息的框架。它使開發人員能夠在不使用 JAX-WS 的情況下建立和解析 SOAP 訊息。 SAAJ 提供了用於處理 SOAP 訊息的簡化介面,使其成為建立 SOAP 用戶端的理想選擇。

工作 SOAP 用戶端範例

以下程式碼片段展示了一個工作使用 SAAJ 的 SOAP 用戶端範例。此客戶端呼叫Web 服務來檢索有關特定城市的資訊:

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 {
        // Create SOAP Envelope and Namespace
        SOAPPart soapPart = soapMessage.getSOAPPart();
        String myNamespace = "myNamespace";
        String myNamespaceURI = "http://www.webserviceX.NET";
        
        SOAPEnvelope envelope = soapPart.getEnvelope();
        envelope.addNamespaceDeclaration(myNamespace, myNamespaceURI);
        
        // Create SOAP Body and Request Content
        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 and Message
            SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
            SOAPConnection soapConnection = soapConnectionFactory.createConnection();
            SOAPMessage soapMessage = createSOAPRequest(soapAction);

            // Send SOAP Message and Receive Response
            SOAPMessage soapResponse = soapConnection.call(soapMessage, soapEndpointUrl);
            soapResponse.writeTo(System.out);

            soapConnection.close();
        } catch (Exception e) {
            System.err.println("Error sending SOAP Request!");
            e.printStackTrace();
        }
    }

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

        MimeHeaders headers = soapMessage.getMimeHeaders();
        headers.addHeader("SOAPAction", soapAction);

        soapMessage.saveChanges();
        
        return soapMessage;
    }

}

運行範例

要執行此範例,您需要安裝Java在您的系統上。將程式碼片段儲存為擴展名為 .java 的文件,使用 javac 編譯它,然後使用 java 運行它。程式碼將呼叫 Web 服務來檢索有關城市「紐約」的信息,回應結果將列印在控制台上。

附加說明

  • 此範例使用簡單的 Web 服務進行示範;您可以修改它以呼叫其他 SOAP Web 服務。
  • SAAJ 已從 Java 11 中刪除,因此如果使用較新版本的 Java,您可能需要使用替代框架或程式庫。

透過遵循此範例並了解使用 SAAJ 建構和處理 SOAP 訊息的概念,您可以自信地為自己的應用程式建立 SOAP 用戶端。

以上是如何使用 Java 中的 SAAJ 建立一個可用的 SOAP 用戶端?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn