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

XMLRAD Discussion :

WebServices et OutputParams


Sujet :

XMLRAD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut WebServices et OutputParams
    Bonjour!
    Je souhaite créer une application (XMLRAD2005) qui fournisse un ensemble de service Web. Il n'y aura donc aucune interface graphique. J'aimerais créer une action de login. Pas de problème pour créer ce XMLService, pour le publier et définir ses paramètres d'entrées-sorties (nom/mdp -> n° session qui sera à utiliser pour executer les autres servcies).
    Mon problème est que lorsque je transmets un nom et un mot de passe (via une requete SOAP (composant HTTPRIO sous delphi, ou via un XMLC_OUTPUTFORMAT=SOAP), le résultat renvoyé n'est pas simplement la valeur de ma session (présent dans une entrée du context), mais l'ensemble de ma grappe XML... Comment paramétrer mon application pour qu'un WebService réponde à un requete SOAP par une simple chaine de caractère?
    J'ai biensur positionné dans OutputParams le nom de l'entrée du context qui possède la valeur, mais il ne semble carrément pas en tenir compte... Il y a peut etre un XPath à renseigner qqs part, mais je n'ai pas trouvé!
    Je ne suis pas encore un grand habitué des WebServices, il y a surment un truc tout bete, pcq ca me parait élémentaire comme fonction

    Michael

  2. #2
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut
    En cherchant un peu je me suis rendu compte que c'etait systématiquement tout le document XML qui etait renvoyé. Le framework ne tiens pas compte des OutputParams (à part pour générer le WSDL).
    Donc la solution si l'on ne veut renvoyer qu'une seule valeur, est simplement de créer une document XML avec un seul élément portant le nom du parametre (comme ce qui est fait pour la démo nommé Calc).
    Par contre je n'ai pas trouvé comment typer les valeurs de retour... Peut on définir le type (autre que xsd:string) des paramètres de sortie ?

    Michael

  3. #3
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    tu peux donner les examples de ce qui est retourné et de ce quie tu attends ?

  4. #4
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut
    OK.
    Pour les champs de type string, pas de soucis, on déclare ses paramètres en OutPutParams et on a le bon resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <SOAP-ENV:Envelope ...>
    	<SOAP-ENV:Body>
    		<tns:DoLoginResponse>
                                     <SESSIONID>XXXXXXXXXX</SESSIONID>
                 	</tns:DoLoginResponse>
    	</SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Ca fonctionne tres bien avec un simple HTTPRIO.
    Dans d'autres cas, je souhaite renvoyer par exemple un ensemble de données ("dataset xml"). Mon OutPutParam est déclaré de la même façon et donc dans le WSDL j'ai toujours (si mon param est EQUS):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
                 <message name="TagExportResponse">
    		<part name="EQUS" type="xsd:string"/>
    	</message>
    ...
    Alors que la réponse est bien plus complexe:

    <SOAP-ENV:Envelope ...>
    <SOAP-ENV:Body>
    <tns:TagExportResponse>
    <EQUS>
    <EQU>
    <ST_CODLON>XXXXXX</ST_CODLON>
    <ST_DESEQU>RALENTISSEUR</ST_DESEQU>
    <ID_CODGES>G11</ID_CODGES>
    </EQU>
    ...
    </EQUS>
    </tns:TagExportResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Cela dit l'échange fonctionne, mais le logiciel client n'a aucun moyen de savoir réellement quel type de donnée va être retourné. Je pourrais vous en dire un peu plus dans qqs temps, le logiciel client n'est pas finalisé (.Net pour PDA). Mais j'avais fait des essais il y a longtemps (en version 6 je crois) en remplissant un ClientDataSet et ca fonctionnait bien, donc je ne suis pas inquiet.

    Michael

  5. #5
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    je pense que ca va dépendre de ton binding-style (rpc ou document)
    le duxième exemple doit être en mode document = document XML qu'il faut parcourri coté client.

  6. #6
    Membre éclairé Avatar de Jeweller
    Inscrit en
    Août 2003
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 357
    Par défaut
    Coté client?? pas sur...
    Par contre j'ai vu que le WSDL pouvait etre générer en position binding-style à document si dans le context "BindingStyle" est à "document" justement.
    Existe-il de la doc sur cela ?? Comment générer un wsdl qui va bien... j'imagine qu'il faut créer les XSD qui correspondent aux services... pas facile!
    Je n'ai rien trouvé sur le site xmlrad, pourtant le framework parait avoir déjà prévu tout ces cas de figure... Comment faire pour renvoyer un véritable dataset en réponse soap ? Faut-il ajouter la description du schema "à la main" dans l'output ?

    Michael

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

Discussions similaires

  1. [Débutant][WebServices] Créer un Web service en java
    Par JeffK dans le forum Services Web
    Réponses: 5
    Dernier message: 24/07/2011, 12h11
  2. [WebService]Fichier Java et WSDL associé pour Web Services
    Par P4_le_requin_breton dans le forum Services Web
    Réponses: 9
    Dernier message: 23/02/2004, 12h55
  3. [WebServices] - Taux de change
    Par malbaladejo dans le forum Général Dotnet
    Réponses: 7
    Dernier message: 03/02/2004, 16h20
  4. [XMLRAD] Security des WebModules et/ou des WebServices
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 18/12/2002, 17h09
  5. WebService Google sur builder 5?
    Par billuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/11/2002, 19h43

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