Pregunta

Estoy un poco oxidado en mi Java, y esta es la primera vez que uso metro / JAX-WS, así que si esta es una pregunta tonta, me disculpo.

Tengo que escribir un cliente que consume un servicio web .NET. Tengo lo básico abajo; He generado los contenedores desde el WSDL, y puedo crear mi objeto y puerto y hacer una llamada y obtener una respuesta.

    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();

Los valores de retorno del servicio web son casi todos XmlDocument o XmlNode. ¿Cómo puedo obtener de wsimport-generado " UserGetWidgetsResponse.UserGetWidgetsResult " al XML real devuelto por la llamada?

Tengo varios de estos servicios con varios métodos, así que espero encontrar una solución que no requiera modificar los envoltorios generados de ninguna manera. Tampoco tengo control sobre la información devuelta por los servicios web.

¿Fue útil?

Solución

Encontré una solución para esto durante el fin de semana, pero no estoy seguro de que sea la solución correcta:

    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));
    }

Esto me da la respuesta del documento XML, que es lo que estaba buscando. Entonces puedo hacer cualquier operación que quiera en el árbol para extraer los datos que estoy buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top