Pergunta

Eu sou um enferrujado pouco em meu Java, e esta é minha primeira vez usando metro / JAX-WS, por isso, se esta é uma pergunta idiota eu peço desculpas.

Eu tenho que escrever um cliente que consome um .NET webservice. Eu tenho o básico para baixo; I geraram os invólucros do WSDL, e eu posso criar meu objeto e porta e fazer uma chamada e obter uma resposta.

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

valores de retorno do webservice são quase todos XmlDocument ou XmlNode. Como faço para começar a partir do "UserGetWidgetsResponse.UserGetWidgetsResult" gerado pelo wsimport ao XML real retornado pela chamada?

Eu tenho um número destes serviços com um monte de métodos, por isso estou esperando para encontrar uma solução que não requer modificar os invólucros gerados de forma alguma. Eu também não tem controle sobre as informações retornadas pelos serviços da web.

Foi útil?

Solução

Eu encontrei uma solução para este fim de semana, mas eu não tenho certeza que é a solução certa:

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

Isso me dá a resposta documento XML, que é o que eu estava procurando. Posso, então, fazer o que eu quero operações na árvore para extrair os dados que eu estou procurando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top