0

私の wsdl には、SOAP11、SOAP12、および HTTP バインディングが含まれています。HTTPBinding からアドレスの場所を取得しようとすると、サンプル コード ブロックがエラーをスローします。

."サポートされていない wsdl エラーです!"

(私は wsdl4j を使用して wsdl を読み取りました)

AddressLocation を取得するサンプル コードは次のとおりです。

private String getAddressUrl(ExtensibilityElement exElement) throws APIManagementException {

        if (exElement instanceof SOAP12AddressImpl) {
            return ((SOAP12AddressImpl) exElement).getLocationURI();
        } else if (exElement instanceof SOAPAddressImpl) {
            return ((SOAPAddressImpl) exElement).getLocationURI();
        } else {
            String msg = "Unsupported WSDL errors!";
            log.error(msg);
            throw new APIManagementException(msg);
        }
    }

ここでは、"SOAP12AddressImpl" と "SOAPAddressImpl" のみが WSDL4J で使用できることがわかります。したがって、HTTPbinding データを渡すと、上記のコードでエラーがスローされます。サンプルの HTTP バインディング拡張要素は次のとおりです。

HTTPAddress ({http://schemas.xmlsoap.org/wsdl/http/}address):
required=null
locationURI=http://10.100.1.35:9000/services/SimpleStockQuoteService.SimpleStockQuoteServiceHttpEndpoint.

HTTPBinding からアドレスの場所を読み取るにはどうすればよいですか? wsdl4jで利用可能な実装はありますか?

4

1 に答える 1

0

申し訳ありません。HTTP アドレスの実装も wsdl4j で利用できます。このように私のコードを修正しました。

if (exElement instanceof SOAP12AddressImpl) {
            return ((SOAP12AddressImpl) exElement).getLocationURI();
        } else if (exElement instanceof SOAPAddressImpl) {
            return ((SOAPAddressImpl) exElement).getLocationURI();
        } else if (exElement instanceof HTTPAddressImpl) {
            return ((HTTPAddressImpl) exElement).getLocationURI();
        } else {
            String msg = "Unsupported WSDL errors!";
            log.error(msg);
            throw new APIManagementException(msg);
        }
于 2013-12-11T12:49:49.180 に答える