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

Я немного заржавел в своей 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, возвращаемому вызовом?

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

1 Ответ

1 голос
/ 09 марта 2009

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

    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-документа, который я и искал. Затем я могу выполнить любые необходимые операции с деревом для извлечения искомых данных.

...