IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Webservice resultat - comment faire


Sujet :

Ruby on Rails

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut Webservice resultat - comment faire
    Bonjour

    J'ai une application rails d'où je fais appel à un webservice. La méthode du webervice que j'apelle effectue un insert dans une table et retourne une String comme valeur.

    public String doInsert(String sValue) throws Exception {
    String sResult = "";
    ...
    return sResult;
    }

    L'appel du coté de mon application rails est fait de la façon suivante:

    ...
    factory = SOAP::WSDLDriverFactory.new($webservice_url)
    soap = factory.create_rpc_driver
    soapResponse = soap.doInsert(:sValue=>@entry.xml)
    ...

    Tout se passe bien, la valeur que je veut insérer dans la table est insérée.
    Mon problème est comment faire le traitement de la réponse retournée par le webservice. En effet je veut voir le contenu afin de savoir si tout s'est bien passé. La valeur retournée par la méthode du webservice est "OK" ou "NOTOK".
    Cependant je ne sais pas comment voir ce contenu. Si je fais:

    puts soapResponse.to_s

    Bien sur, ça m'affiche des choses incompréhensibles car c'est du SOAP.

    #<SOAP::Mapping::Object:0x56439f8>

    Pouvez vous m'expliquer comment faire pour faire un parse de ceci afin de voir la valeur retournée par la méthode du webservice?

    merci

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour

    Le mieux serai de faire un puts soapResponse.inspect, histoire de voir la structure de l'objet que tu récupère
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    Merci pour la réponse. Je l'avais déjà fait mais je ne l'avais pas indiqué:

    SOAP RESPONSE: #<SOAP::Mapping::Object:0x2ad956a {
    http://ws.abracadabra.lu/infodem2/xsd/}return=#<SOAP::Mapping::Object:0x2ad93c6>>

    Et aussi la partie du wsdl qui est importante:

    <xs:element name="doInsertResponse">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="return" nillable="true" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>

    Comment est-ce que je peux procéder pour voir la valeur de "return"?

    merci

    Citation Envoyé par titoumimi Voir le message
    Bonjour

    Le mieux serai de faire un puts soapResponse.inspect, histoire de voir la structure de l'objet que tu récupère

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    c'est vraiment étrange, je viens de tester en local un retour de chaîne, et je n'obtiens pas ça :


    <?xml version="1.0" encoding="UTF-8" ?>
    <env:Envelope xmlnssd="http://www.w3.org/2001/XMLSchema"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
    xmlnssi="http://www.w3.org/2001/XMLSchema-instance">
    <env:Body>
    <n1:TotoResponse xmlns:n1="urn:ActionWebService"
    env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <return xsi:type="xsd:string">coucou</return>
    </n1:TotoResponse>
    </env:Body>
    </env:Envelope>
    (ce que renvoie mon serveur Rails)

    Et quand je récupère ce bazar (de la même manière que toi) depuis un script Ruby, il me mets directement "coucou" comme valeur de retour...

    Tu es Sûr du webservice de l'autre coté ?
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Essaie tout de même soapResponse.return.inspect
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    En faisant

    puts "----------------------------- SOAP RESPONSE: " + soapResponse.return.inspect

    j'obtiens:

    SOAP RESPONSE: #<SOAP::Mapping::Object:0x2a4b2ba>


    heeeeeeelllllpppppppp

    Citation Envoyé par titoumimi Voir le message
    Essaie tout de même soapResponse.return.inspect

  7. #7
    Membre du Club

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 30
    Points : 43
    Points
    43
    Par défaut
    J'avais vu un post il y a quelques temps sur le fait qu'une chaine vide retournée d'un web-service pouvait générer un SOAP Mapping Object à la place de la valeur.

    Pourrais-tu t'assurer que ce n'est pas une chaine vide qui est retournée par le web service, à tout hasard ?

    Aussi, si on pouvait avoir ta version de ruby (ruby -v) et celle de titoumimi qui a fait un test qui fonctionne, peut être verrait-on une différence de version qui se traduirait par des versions de soap4r différentes également ?

    Juste des idées...

    Thibaut
    --
    http://blog.logeek.fr - about writing software
    http://evolvingworker.com - tools for a better day

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 401
    Points : 153
    Points
    153
    Par défaut
    Un grand merci, c'est exactement cela.

    Le fait que ma méthode retourne une String vide fait que la valeur imprimée sur l'écran ne soit pas ce que j'attendais.
    Maintenant, j'ai fait un cas de test ou j'ai une String retournée avec la valeur "sss" et voilà le résultat:

    puts "RESPONSE: " + soapResponse.return.inspect

    RESPONSE: "sss"

    Encore une fois un grand merci.


    Citation Envoyé par thbar Voir le message
    J'avais vu un post il y a quelques temps sur le fait qu'une chaine vide retournée d'un web-service pouvait générer un SOAP Mapping Object à la place de la valeur.

    Pourrais-tu t'assurer que ce n'est pas une chaine vide qui est retournée par le web service, à tout hasard ?

    Aussi, si on pouvait avoir ta version de ruby (ruby -v) et celle de titoumimi qui a fait un test qui fonctionne, peut être verrait-on une différence de version qui se traduirait par des versions de soap4r différentes également ?

    Juste des idées...

    Thibaut
    --
    http://blog.logeek.fr - about writing software
    http://evolvingworker.com - tools for a better day

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Comment faire => resultat de mysql en affichage temps réel
    Par noellepere dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/09/2007, 09h55
  2. [Web Service][SOAP] Webservices : Comment faire ?
    Par juliotte dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 18/12/2006, 16h50
  3. Comment faire un webservice ?
    Par manu00 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 03/12/2006, 21h53
  4. Résultats de recherche Google détaillés : Comment faire ?
    Par Mr N. dans le forum Référencement
    Réponses: 6
    Dernier message: 14/11/2006, 15h11
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo