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

  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

  7. #7
    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
    Et en plus c'est tres nul, le XSD n'est importé que si le WSDL ne décrit qu'une seule opération (un seul XMLService)... A quoi ca sert ????

  8. #8
    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
    Si j'ai bien compris tu veux le Schema pour que coté client il puissent le parser autoamtiquement poru le remplir dans un DataSet ?
    c'est toujours ton client .NET ?

  9. #9
    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
    Dans le mille x2!
    J'aimerais envoyer un ensemble de donnée (en gros le resultat d'un simple DBExtract) via le WebService (interface d'export). Mais du coté .NET je n'y connais pas grand chose et effectivement la parse automatique echoue car le schema renvoyé n'est apparement pas correct (?)! Je ne sais pas si c'est possible de le faire manuellement (certainement)? De leur coté, ils créent ce qu'ils appellent un "proxy"(?) mais l'appel de l'opération sur le webservice echoue si l'élement renvoyé n'est pas une simple valeur mais un ensemble de donnée.
    Donc j'ai décris un XSD le plus proche possible de ceux généré automatiquement par VS dans ce cas, mais cela ne fonctionne pas non plus. Si tu me dis qu'il y a d'autres solutions sous VS je suis preneur, j'ai du mal à croire qu'il ne soit pas capable de lire une grappe XML depuis un WebService même si le paramètre est décris comme un xsd:string. L'idée finale etant simplement de récupérer une liste de données sur un PDA depuis une application XMLRAD. J'esperais qu'en qqs clic sous XMRAD le webservice soit développé, mais au lieu d'y passer qqs heures, j'y ai déjà passé déjà 2 jours!
    Si tu as des infos/astuces/exemples coté VS, je les transmets volontier à mon client ;-)
    Michael

  10. #10
    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
    bon effectivement y a 2/3 trucs qui vont pas du tout pour que ce soit correct.
    ca demande pas mal de travail pour la mise en conformité pour être appelé par .NET

  11. #11
    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
    Aie Aie Aie
    Le wsdl généré en bindingstyle document ne parait pas correct non plus... l'élément "ServiceNameResponse" est vide, la description du shéma n'y est pas imbriqué mais est à la suite!
    Ca veut dire que pour mon projet (mise en production debut septembre), je vais devoir renvoyer du CSV ou un autre format dégradé (en esperant que ca ca marche!) ? Dommage...

  12. #12
    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
    tout dépend du niveau d'exigence pour le client.
    en .NEt tu peux quand invoquer ton service soit en SOAP soit en XMLC_OutputFormat=XML
    puis parser le contenu...

  13. #13
    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
    Ben disons que renvoyer bcp de lignes en CSV c'est pas génial et surtout on refait un saut de 10aines d'années en arrière! Et puis en XMLC_OUTPUTFORMAT=XML c'est plus du WebService!
    Je pensais qu'une application XMLRAD etait "nativement" un WebService et je m'en ventais (XMLRAD aussi d'ailleurs, non?), mais ce n'est pas le cas à mon sens.... en tout cas je ne m'aventurerais plus sur ce terrain (mais je crois que c'est trop tard). Je risque de devoir baisser mon pantalon devant mes responsables... -ca m'apprendra à ne pas vérifier!-

  14. #14
    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 peux te fournir un patch non officiel pour que le Service soit invocable par VS.NET d'ici quelques jours si ca t'interesse...

  15. #15
    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
    Quand tu dis invoquables par VS, tu entends par ce fait que je pourrai lui envoyer un ensemble de données XML (resultat d'un DBExtract)?
    Oui, et comment que ca m'interesse!!

+ 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