PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Exemple de la fonction SOAPVersHTTP
SOAPVersHTTP (Exemple)
Exemple de la fonction SOAPVersHTTP
// Appel classique utilisant l'appel complet à une méthode de Webservice
WSparam est un MethodeWebServiceRequest
WSReponse est un MethodeWebServiceResponse
 
WSparam.AccountNumber = "123456789"
WSparam.name = "my name"
// etc...
 
// Si on ne veut pas modifier le XML envoyé, il suffit de faire :
WSReponse = NomWebService.MethodeWebService(WSparam)
SI ErreurDétectée ALORS
// Le retour n'est pas du XML ou du XML qui n'est pas valide
Erreur("Echec de l'appel du WebService : " + ErreurInfo())
SINON
// Traitement du retour du Web service
// Ce Webservice retourne un code erreur en cas de problème : y a t-il un code erreur ?
SI Val(WSReponse.ResponseInformation.Error) > 0 ALORS
// Oui...
Erreur("Erreur n°" + WSReponse.ResponseInformation.Error,
WSReponse.ResponseInformation.ErrorMessage)
SINON
Info("Réponse du WebService : ", WSReponse.ResponseInformation)
FIN
FIN
// Appel à la même méthode de Webservice mais en personnalisant le XML envoyé
WSparam est un MethodeWebServiceRequest
WSReponse est un MethodeWebServiceResponse
 
WSparam.AccountNumber = "123456789"
WSparam.name = "my name"
// etc...
 
// Récupération de la requête HTTP envoyée par défaut avec les paramètres ci-avant
HTTP_requete_WS est un httpRequête = SOAPVersHTTP(NomWebService.MethodeWebService, WSReponse)
// Récupération du contenu, donc du XML, dans une variable xmlDocument
XML_requete_WS est un xmlDocument = XMLOuvre(HTTP_requete_WS..Contenu, depuisChaîne)
// ------------- Modification du xml avant envoi
// Manipulation de XML_requete_WS pour changer tout ce que l'on souhaite....
XML_requete_WS.Envelope.Body.MethodeWebServiceRequest:attribut = "valeur"
// etc...
// dans cette partie, il est possible de modifier tout ou partie du XML
// qui va être envoyé au Webservice
//-------------
 
// Ré-injecte le XML modifié dans la requête HTTP
HTTP_requete_WS..Contenu = XML_requete_WS.ConstruitChaîne()
 
// Exécute la requête HTTP pour appeler la méthode du WS
HTTP_retour_WS est un httpRéponse = HTTPEnvoie(XML_requete_WS)
SI ErreurDétectée ALORS
Erreur("Echec de l'appel du WebService", ErreurInfo())
SINON
// Met le retour du Webservice dans
// la variable du type prévu lors de l'import du WebService dan le projet
// Pour cela on récupère d'abord le source XML dans une variable XMLDocument
XML_retour_WS est un xmlDocument = XMLOuvre(HTTP_retour_WS..Contenu, depuisChaîne)
SI ErreurDétectée _OU_ PAS ChaîneCommencePar(HTTP_retour_WS..ContentType, ...
[typeMimeSOAP, "text/xml"], ccSansCasse) ALORS
// Le retour n'est pas du XML ou du XML qui n'est pas valide
Erreur("Echec, retour non XML ", HTTP_retour_WS..Contenu)
SINON
// Erreur soap ? (il y a un code d'erreur ou un message d'erreur à la norme SOAP ?)
SI XML_retour_WS.Envelope.Body.Fault.faultstring <> "" ...
 _OU_ XML_retour_WS.Envelope.Body.Fault.faultCode <> "" ALORS
// Message d'erreur
sMessageErreur est une chaîne = XML_retour_WS.Envelope.Body.Fault.faultstring
// Code d'erreur
sCodeErreur est une chaîne = XML_retour_WS.Envelope.Body.Fault.faultCode
// Autres informations de détail sur l'erreur (dépend du Webservice)
POUR TOUT noeudetail DE XML_retour_WS.Envelope.Body.Fault
SI PAS noeudetail..Nom DANS ("faultstring", "faultCode") ALORS
sMessageErreur += [RC] + noeudetail..Nom + " : " + noeudetail..Texte
FIN
FIN
Erreur("Erreur renvoyée par le WebService", "Erreur n°" + sCodeErreur, sMessageErreur)
SINON
// Dans le XML, on prend la partie de la réponse SOAP (première sous balise du Body)
xmlNoeudReponseSoap est un xmlNoeud
xmlNoeudReponseSoap = XML_retour_WS.Envelope.Body..NoeudFils[1]
// Et on met à jour la variable "WSReponse" qui est du type importé du WebService
SI xmlNoeudReponseSoap..Namespace..Nom<>"" ALORS
WSReponse..InnerXML = XMLExtraitChaîne(xmlNoeudReponseSoap..SourceXML, ...
xmlNoeudReponseSoap..Namespace..Nom+":" + xmlNoeudReponseSoap..Nom, 1, XMLExact)
SINON
WSReponse..InnerXML = XMLExtraitChaîne(xmlNoeudReponseSoap..SourceXML, ...
xmlNoeudReponseSoap..Nom, 1, XMLExact)
FIN
 
// Traitement normal du retour du WebService avec WSReponse comme dans l'appel classique
// Ce Webservice retourne un code erreur en cas de problème : y a t-il un code erreur ?
SI Val(WSReponse..ResponseInformation..Error) > 0 ALORS
// Oui...
Erreur("Erreur n°" + WSReponse.ResponseInformation.Error,
WSReponse..ResponseInformation..ErrorMessage)
SINON
Info("Reponse du WebService : ", WSReponse..ResponseInformation)
FIN
FIN
FIN
FIN
Version minimum requise
  • Version 24
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire