簡體   English   中英

如何使用Java從WSDL獲取SOAPAction

[英]How to get SOAPAction from the WSDL using Java

我使用javax.wsdl包來解析wsdl文件。

我不知道如何從wsdl文件中獲取操作的SOAPAction。

我可以使用WSDLFactory獲取javax.wsdl.Operation對象。 但我發現無法獲得該操作的SOAPAction。

有人知道如何獲得它嗎?

謝謝,Maviswa

你需要得到ExtensibilityElement對應於SOAPOperation和提取SOAPAction從那里。

讓我們從TempConvert Web服務中獲取一個簡單的WSDL示例,並從其CelsiusToFahrenheit操作中提取SOAP操作; 我要跟這個部分:

<wsdl:binding name="TempConvertSoap" type="tns:TempConvertSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="FahrenheitToCelsius">
      <soap:operation soapAction="http://tempuri.org/FahrenheitToCelsius" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="CelsiusToFahrenheit">
      <soap:operation soapAction="http://tempuri.org/CelsiusToFahrenheit" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>

以下代碼打印CelsiusToFahrenheit操作的SOAP操作的值:

WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
Definition definition = reader.readWSDL("http://www.w3schools.com/webservices/tempconvert.asmx?wsdl");
Binding binding = definition.getBinding(new QName("http://tempuri.org/", "TempConvertSoap"));
BindingOperation operation = binding.getBindingOperation("CelsiusToFahrenheit", null, null); 
List extensions = operation.getExtensibilityElements();
if (extensions != null) {
    for (int i = 0; i < extensions.size(); i++) {
        ExtensibilityElement extElement = (ExtensibilityElement) extensions.get(i); 

        // ....

        if (extElement instanceof SOAPOperation) {
            SOAPOperation soapOp = (SOAPOperation) extElement;
            System.out.println(soapOp.getSoapActionURI());
        }

        // ....
    }
}

輸出是這樣的:

http://tempuri.org/CelsiusToFahrenheit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM