Question

Je suis un peu rouillé dans mon langage Java, et c’est la première fois que je travaille avec metro / JAX-WS. Par conséquent, s’il s’agit d’une question idiote, je vous présente mes excuses.

Je dois écrire un client qui utilise un service Web .NET. J'ai les bases; J'ai généré les wrappers à partir du WSDL et je peux créer mon objet, mon port, passer un appel et obtenir une réponse.

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

Les valeurs de retour du Webservice sont presque toutes XmlDocument ou XmlNode. Comment puis-je obtenir le "UserGetWidgetsResponse.UserGetWidgetsResult" généré par wsimport " au XML réel renvoyé par l'appel?

J'ai un certain nombre de ces services avec un tas de méthodes, j'espère donc trouver une solution qui ne nécessite aucune modification des wrappers générés. Je n'ai également aucun contrôle sur les informations renvoyées par les services Web.

Était-ce utile?

La solution

J'ai trouvé une solution à ce problème ce week-end, mais je ne suis pas sûr que ce soit la bonne solution:

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

Cela me donne la réponse au document XML, ce que je recherchais. Je peux ensuite effectuer toutes les opérations souhaitées sur l'arbre pour extraire les données que je recherche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top