tu as écrit que ton soap n'était pas accepté par windev.
il est donc nécessaire d'analyser celui-ci pour adapter le code.
difficile de fournir un code sur du vide.
-
Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !Rejeter la notice
WD Consomer un web service soap au lieu d'importer
Discussion dans 'Résolution problème & conseils' créé par saad27, Juil 10, 2018.
Page 1 sur 2
par exemple si tu peut simplement me montrer un GET basic pour soap,car je n'ai jamais essayé ça.
Merci
Saad
httprequette avec URL
httpresultat
tu enregistre dans fichier UTF-8
ensuite tu analyse
impossible de te dire plus.
J'ai travaillé récemment sur un Webservice qui ne fournissait pas son WSDL
J'ai donc créé des classes afin de gérer le webservice.
Il faut analyser le contenu attendu par le webervice, on retrouve souvent des redondances (Entêtes contant des infos identification par exemple), avec ceci tu créé la classe de base dont les autres hériterons.
Ensuite pour chaque fonction tu webservice, tu créés une classe qui hérite de la classe de base.
Tu construit la classe et ses membres en fonction de ce qui est attendu par le webservice et tu créer une methode du genre "SendData", laquelle va s'occuper de sérialiser en XML ton objet et l'envoyer au webservice via : SoapExecuteXML
De meme, pour chaque réponse du webservice tu créé la classe associée afin de récupérer le resultat
Exemple :
CEnvoiDonnees est un C_WebServiceTest
CEnvoiDonnees.m_sUneChaine = "test"
CEnvoiDonnees.m_sUneChaine2 = "test 2"
// etc.. tu défini les valeur attendues par le webservice
CReponse est un C_WebServiceTestReponse
CReponse = CEnvoiDonnees.SendData()
// Code de C_WebServiceTest.SendData()
reponse est un C_WebServiceTestReponse
bufData est un buffer
Sérialise(objet,bufData,psdXMLAgrégé) //Sérialise l'objet en cours au format XML dans le buffer bufData
SI SOAPExécuteXML(sServiceURL,bufSerialise) ALORS
bufResultatRequete est un buffer = SOAPDonneRésultat(SOAPRésultatXML)
Désérialise(reponse,bufResultatRequete,psdXMLAgrégé)
RENVOYER Reponse
FIN
Ce n'est qu'un tout petit exemple mais ca éxplique comment j'ai procédé. Ca foncitonne plutot bien![]()
saad27 apprécie ceci.
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
Je vais voir ce que je peux faire, je vais devoir modifier avant de partager le composant mais c'est possible oui !
Edit : Bon ca va etre compliqué de partager ce composant en particulier pour des raisons contractuelles.. et y'aurait trop de taf pour "l'anonymiser"
Mais n'hésite pas a demander de l'aide.
Alors le document la c'est un XSD en fait, c'est le schéma de validation du format XML attendu par le web service (XMLDocumentValide en windev permet cela) dans lequel on retrouve tous les elements (stucutures) utilisables et reconnu par le webservice.
C'est pratique pour créer les classe car ça permet de connaitre le type de chaque membre et leur taille max par exemple.
Exemple, dans ton XSD on trouve :
<xsd:element name="CalculateTransactionTotals">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="vendorCode" type="xsd:string"/>
<xsd:element minOccurs="1" maxOccurs="1" name="ppMenuItems" type="xsd1:String&"/>
<xsd:element minOccurs="1" maxOccurs="1" name="ppComboMeals" type="xsd1:String&"/>
<xsd:element minOccurs="1" maxOccurs="1" name="pSvcCharge" type="xsd1:String&"/>
<xsd:element minOccurs="1" maxOccurs="1" name="pSubtotalDiscount" type="xsd1:String&"/>
<xsd:element minOccurs="1" maxOccurs="1" name="revenueCenter" type="xsd:int"/>
<xsd:element minOccurs="1" maxOccurs="1" name="orderType" type="xsd:int"/>
<xsd:element minOccurs="1" maxOccurs="1" name="employeeNumber" type="xsd:int"/>
<xsd:element minOccurs="1" maxOccurs="1" name="pTotalsResponse" type="xsd1:String&"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
On peut donc imaginer l'objet suivant :
CalculateTransactionTotals est un CCalculateTransactionTotals
vendorCode est une chaine
ppMenuItems est une chaine
ppComboMeals est une chaine
pSvcCharge est une chaine
pSubtotalDiscount est une chaine
revenueCenter est un entier
orderType est un entier
pTotalsResponse est une chaine
FIN
IL faut imaginer chaque noeud comme un objet (ou structure .. a voir en fonction) en fait.
Ensuite pour construire tes requêtes, tu créé des objets en fonctions des besoins
Par contre avec QUE ce document tu ne pourra pas aller bien loin.
Tu n'a pas une doc fournie ? Avec des samples de requetes et reponses ?
Il te faudrait aussi un soft du genre SOAP UI :Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
Pour tester tes requetes
saad27 apprécie ceci.
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
j'ai aucun autre information, apart ce lien est le XSD.J'ai essayé sur SOAP Ui mais sa ne fonctionne pas,erreur de syntaxe.
J'attends un exemple de ta part qui puisse m'aider à construire la requête
Merci,
SaadCliquez pour agrandir...
Il faut un peu plus de détails

Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
D'apres le Xsd on peut voir une URL..
Essaye d'importer ce lien dans windev :
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
Moi je n'y ai pas accès mais bon peut être il y a un filtrage IP..
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
D'apres le Xsd on peut voir une URL..
Essaye d'importer ce lien dans windev :
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
Moi je n'y ai pas accès mais bon peut être il y a un filtrage IP..Cliquez pour agrandir...
mais je pense que ton lien
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
doit être le bon wsdl pour windev.j'ai aussi vu des URL avec tempori.org mais j'ai pas non plus accès.
mais je pense que ton lienBonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
doit être le bon wsdl pour windev.Cliquez pour agrandir...
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
pour obtenir le WSDL.
Maintenant comme je l'ai dit, il ne serait pas étonnant qu'il y ai un filtrage IP ou autre (c'est généralement le cas) donc il faut d'abord se faire autoriser auprès de l'administrateur du serveur.. (Et avoir une ip fixe !)