FreeDev
Site développé avec WebDev
Accueil
 Les codes free de FreeDev
[WinDev][22] Appel/consommation d'un webservice, comment basculer sur SOAPExécuteXML voir HTTPRequete ?

Voici un exemple fourni par le ST :

Normalement lorsque l'on importe un webservice dans un projet avec son WSDL, on fait directement l'appel de la fonction.

Par exemple si un Webservice a une fonction pSomme qui fait la somme de deux paramètres reçus :

pSomme(17,16)

-- SOAPExécuteXML -----------

Maintenant si l'appel nécessite un bricolage de la requête ne pouvant pas se faire, on peut passer par la fonction SOAPExécuteXML (https://doc.pcsoft.fr/fr-FR/?3069014) :

sRequete est une chaîne = SOAPPrépare(pSomme, 17,16)

SOAPExécuteXML("http://stg21.pcscloud.net/WSGB_WEB/awws/WSGB.awws", sRequete, "urn:WSGB/pSomme")

Info(SOAPDonneRésultat(SOAPRésultatHTTP))

Dans cette appel, la fonction SOAPExécuteXML prend :

- adresse en premier paramètre : celle du "soap:address location" du WSDL
- <Action de la procédure> : celle visible dans "soap:operation soapAction" de la fonction du WSDL

http://stg21.pcscloud.net/WSGB_WEB/awws/WSGB.awws?wsdl

-- HTTPRequete --------

Maintenant si même avec SOAPExécuteXML on ne peut pas ajouter tout ce que l'on veut dans la requête, il reste la fonction HTTPRequete (http://doc.pcsoft.fr/fr-FR/?3043007) :

sRequete est une chaîne = SOAPPrépare(pSomme, 17,16)

HTTPRequête("http://stg21.pcscloud.net/WSGB_WEB/awws/WSGB.awws","","SOAPAction: ""urn:WSGB/pSomme"""+RC,sRequete,"text/xml")

Trace(HTTPDonneRésultat(httpRésultat))

Même principe que pour SOAPExécuteXML, on trouve le "SOAPAction" dans le WSDL, mais attention il faut le faire suivre d'un RC (sinon "le contenu de la requête est vide" car il manque le "double RC" qui sépare l'entête de la requête de son contenu.

Cas particulier pour l'appel via HTTPRequete, certains webservices peuvent rechercher l'action à effectuer dans le content-type (paramètre <Type du message>). Dans ce cas le "action=..." qui va bien sera ajouté au paramètre content-type et ne sera plus dans le paramètre <Entête HTTP supplémentaire>. Illustration de ce cas particulier là : [TB101514]

Faites des économies facilement, pensez iGraal :

J'utilise personnellement iGraal (cliquez sur le bandeau de pub à droite de ce texte).
Cela m'a permis
après inscription gratuite et installation de la barre iGraal dans le navigateur de récupérer plusieurs centaines d'euros lors de mes différents achats sur Internet (matériel à la FNAC, réservation d’hôtels chez Booking.com ou Hotels.com, achat sur la Redoute …)

C'est un vrai bon plan qui ne nécessite aucun engagement. Vous recevez ensuite le chèque à votre domicile ou un virement sur votre compte bancaire.

Il vous suffit d’installer la barre iGraal et de l’activer avant chaque achat.

Inscrivez-vous
Code Wlangage
RECHERCHE