gpt4 book ai didi

java - 如何使用 Java 从 WSDL 获取 SOAPAction

转载 作者:搜寻专家 更新时间:2023-11-01 01:37:37 26 4
gpt4 key购买 nike

我正在使用 javax.wsdl 包来解析 wsdl 文件。

我不确定如何从 wsdl 文件中获取操作的 SOAPAction。

我能够使用 WSDLFactory 获取 javax.wsdl.Operation 对象。但我找不到获取该操作的 SOAPAction 的方法。

有人知道如何获得它吗?

谢谢,玛维斯瓦

最佳答案

您需要获取与 SOAPOperation 对应的 ExtensibilityElement 并从那里提取 SOAPAction

让我们以一个简单的 WSDL 为例,来自 TempConvert Web Service ,并从其 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

关于java - 如何使用 Java 从 WSDL 获取 SOAPAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com