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

Delphi Discussion :

Delphi - API SOAP


Sujet :

Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Par défaut Delphi - API SOAP
    Bonjour Tout le monde,

    Comment faire pour interroger un service sous delphi 7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:yous="http://www.xx.com" xmlns:aut="http://xxx.xxx.com/">
       <soapenv:Header>
          <username>USERNAME</username>
          <password>PASSWORD</password>
          <apikey>APIKEY</apikey>
       </soapenv:Header>
       <soapenv:Body>
          <yous:connect/>
       </soapenv:Body>
    </soapenv:Envelope>

    pour obtenir le message suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
       <S:Body>
          <ns2:connectResponse xmlns:ns2="http://www.xxxx.com">
             <return>true</return>
          </ns2:connectResponse>
       </S:Body>
    </S:Envelope>


    Cordialement,

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Utilise l'expert WSDLimp qui va te générer un Wrapper (TRemotable) et te fournira une fonction d'instanciation d'un THTTPRIO implémentant le marshalling du TRemotable

    Voir la documentation de Expert d'importation WSDL en Berlin, cela n'a pas beaucoup changé, le SOAP c'est un peu has-been par rapport au REST JSON, car chacun avait son mode par défaut entre Java, MS ou Borland, entre le literal/encoded, literal/document, rpc/encoded ... évidemment, pas un seul n'avait le même par défaut
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 14
    Par défaut
    Bonjour ShaiLeTroll ,
    Pour la demarche d'import de WSDL je la connais merci, mon problème c'était d'ajouter au wsdl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <soapenv:Header>
          <username>USERNAME</username>
          <password>PASSWORD</password>
          <apikey>APIKEY</apikey>
       </soapenv:Header>
    j'ai pu résoudre ce problème en ajoutant la fonction suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    function TSOAPCredentials. ObjectToSOAP(RootNode, ParentNode: IXMLNode;
                                     const ObjConverter: IObjConverter;
                                     const Name, URI: InvString; ObjConvOpts: TObjectConvertOptions;
                                     out RefID: InvString): IXMLNode;
    begin
     Result := ParentNode.AddChild('YOUR_USERNAME');
     Result.Text := FUsername;
     Result := ParentNode.AddChild('YOUR_PASSWORD');
     Result.Text := FPassword;
     Result := ParentNode.AddChild('YOUR_APIKEY');
     Result.Text := FKeyClient;
    end;
    ce que j'ai obtenu me convient parfaitement pour les Headers mais pas pour body


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Header>
    <TSOAPCredentials xmlns="urn:Unit1">
    <username>xxxxxx</username>
    <password>xxxxxx</password>
    <apikey>xxxxxx</apikey>
    </TSOAPCredentials></SOAP-ENV:Header>
    <SOAP-ENV:Body/>
    </SOAP-ENV:Envelope>
    qui doit etre sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <soapenv:Body>
          <yous:connect/>
       </soapenv:Body>
    pouvez vous m 'aider s'il vous pait,

    y a t il un exemple sous delphi 7 d'utilisation API REST


    Cordialement ,

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    L'API Rest, c'est juste un JSON envoyé comme ça, déjà qu'en DXE2, ce n'était pas encore au point, il manquait la Beared Auth que j'ai codé mon même à coup de TIdHTTP et TIdAuthentication
    Alors en D7, faudra voir un vieux source de Marco Cantu qui aurait pu le faire en entier à l'époque

    Après pour le corps, comme je le disais faut forcer les modes literal/encoded, literal/document, rpc/encoded
    Et tu as option des options comme "Unwind des paramètres littéraux"
    A forcer de bidouiller, il finit par générer ce qu'il faut
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Interroger l'api soap de magento avec Talend
    Par MG2014 dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 23/06/2015, 10h21
  2. [Web Service] api soap php comment l'utiliser
    Par asus02 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/10/2011, 15h35
  3. Delphi WebServices SOAP Attachment
    Par AnthoMBT dans le forum Web & réseau
    Réponses: 2
    Dernier message: 13/10/2011, 13h09
  4. [Mantis 1.2.3] Ajout d'issue via l'API / SOAP
    Par yrsone dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 20/10/2010, 14h20
  5. [Delphi 7] SOAP sans WSDL
    Par serge0934 dans le forum Web & réseau
    Réponses: 0
    Dernier message: 07/02/2008, 19h19

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