Использование веб-службы .NET в Java (метро) - потребление XMLNode / XMLDocument?
-
05-07-2019 - |
Вопрос
Я немного заржавел в своей 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-документа, который я и искал. Затем я могу выполнять любые необходимые операции в дереве для извлечения искомых данных.