Использование веб-службы .NET в Java (метро) - потребление XMLNode / XMLDocument?

StackOverflow https://stackoverflow.com/questions/620943

Вопрос

Я немного заржавел в своей Java, и я впервые использую metro / JAX-WS, поэтому, если это глупый вопрос, я прошу прощения.

Я должен написать клиент, который использует веб-сервис .NET. У меня есть основы вниз; Я сгенерировал оболочки из WSDL, и я могу создать свой объект и порт, сделать вызов и получить ответ.

    Widgets d = new Widgets();
    WidgetsSoap dp = d.getWidgetsSoap();
    ((BindingProvider)dp).getRequestContext(). put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://actualsite/foo.asmx");

    UserGetWidgetsResponse.UserGetWidgetsResult j = dp.userGetWidgets();

Возвращаемые значения веб-службы - почти все XmlDocument или XmlNode. Как получить от созданного wsimport & UserGetWidgetsResponse.UserGetWidgetsResult " к фактическому XML, возвращенному вызовом?

У меня есть несколько таких сервисов с множеством методов, поэтому я надеюсь найти решение, которое не требует каких-либо модификаций сгенерированных оболочек. У меня также нет контроля над информацией, возвращаемой веб-службами.

Это было полезно?

Решение

Я нашел решение этой проблемы на выходных, но я не уверен, что это правильное решение:

    UserGetDevicesResponse.UserGetDevicesResult j = dp.userGetDevices();
    List<Object> n = j.getContent();
    if (n.size() > 0)
    {
        Node z = (Node)n.get(0);
        System.out.println(nodeToString(z));
    }

Это дает мне ответ XML-документа, который я и искал. Затем я могу выполнять любые необходимые операции в дереве для извлечения искомых данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top