|
|
|
|
|
- Exemple de la fonction SOAPVersHTTP
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
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|