Domanda

Sono un po 'arrugginito nella mia Java, e questa è la prima volta che utilizzo metro / JAX-WS, quindi se questa è una domanda stupida, mi scuso.

Devo scrivere un client che utilizza un servizio Web .NET. Ho le basi giù; Ho generato i wrapper dal WSDL e posso creare il mio oggetto e la mia porta, effettuare una chiamata e ottenere una risposta.

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

I valori di ritorno del servizio web sono quasi tutti XmlDocument o XmlNode. Come posso ottenere da " UserGetWidgetsResponse.UserGetWidgetsResult " generato da wsimport all'XML effettivo restituito dalla chiamata?

Ho un certo numero di questi servizi con un sacco di metodi, quindi spero di trovare una soluzione che non richieda in alcun modo la modifica dei wrapper generati. Inoltre, non ho il controllo delle informazioni restituite dai servizi Web.

È stato utile?

Soluzione

Ho trovato una soluzione a questo durante il fine settimana, ma non sono sicuro che sia la soluzione giusta:

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

Questo mi dà la risposta al documento XML, che è quello che stavo cercando. Posso quindi eseguire qualsiasi operazione sull'albero per estrarre i dati che sto cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top