|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| Problème Récupération Flux XML (WebService SOAP) |
| Iniciado por Lionel H., 27,feb. 2019 12:16 - No hay respuesta |
| |
| | | |
|
| |
Miembro registrado 7 mensajes |
|
| Publicado el 27,febrero 2019 - 12:16 |
Bonjour à tous, j'ai créé un webService SOAP qui contient 2 Procédures globales qui sont : - PG_XML_IMPORT (issu des exemples PCsoft) - PushData(flux est une chaine)
mon fournisseur m'envoi un flux par la procédure <PushData>
mon problème : je récupère ce flux mais je ne peux ni récupérer le contenu par fichier texte, ni récupérer les données. Quand je le fait à partir d'un programme test dans windev (avec utilisation du fichier WSDL) ça fonctionne.
voici mes 2 procédures, ci-dessous.
Merci à tous de votre aide. LH
====================== PROCÉDURE PushData(sFluxXML est une chaîne) s_DOCXML est une chaîne="DOCXML"
sFichierXML est une chaîne = "c:\temp\PushData_"+DateSys()+"_"+HeureSys()+".xml" sFluxEntrant est une chaîne = sFluxXML sFluxReponse est une chaîne bResFlux est un booléen = Faux
fSauveTexte(sFichierXML,sFluxEntrant) QUAND EXCEPTION DANS //ouverture du document bResFlux = XMLDocument(s_DOCXML,sFluxEntrant) SI bResFlux = Faux ALORS PI_FluxReponse("200") //positionnement à la racine XMLRacine(s_DOCXML)
//parcours du document PG_XML_IMPORT(s_DOCXML)
//fin du document XMLTermine(s_DOCXML)
PI_FluxReponse("OK") FAIRE bResFlux = Faux PI_FluxReponse("100") FIN RENVOYER sFluxReponse
PROCÉDURE INTERNE PI_FluxReponse(sErreurCode) SI PAS bResFlux ALORS sFluxReponse=[ <success>false</success> <errorMessage>%1</errorMessage> ] sFluxReponse = ChaîneConstruit(sFluxReponse,sErreurCode) SINON sFluxReponse=[ <success>true</success> <errorMessage>%1</errorMessage> ] sFluxReponse = ChaîneConstruit(sFluxReponse,sErreurCode) FIN FIN
==================== PROCÉDURE PRIVÉE PG_XML_IMPORT(sDocXML, nNiveau=0) nPositionXML est un entier sElement est une chaîne bAttribut est un booléen bBalise est un booléen sData est une chaîne
// Parcours de tous les éléments XMLPremier(sDocXML) TANTQUE PAS XMLEnDehors(sDocXML) // Récupère les données de l'élément sData = XMLDonnée(sDocXML) //Type d'élément bAttribut = Faux bBalise = Faux SELON XMLTypeElement(sDocXML) CAS XMLAttribut // Attribut affiché entre côtes sElement = XMLNomElément(sDocXML) bAttribut = Vrai CAS XMLBalise // Attribut affiché entre < et > sElement = XMLNomElément(sDocXML) bBalise = Vrai AUTRE CAS // dont CAS XMLErreur sElement = "Erreur XML" FIN // Il y a des données pour cet élément ? SI ChaîneFormate(sData, ccSansPonctuationNiEspace + ccSansEspace + ccSansAccent) = "" ALORS // Pas de données SINON // OK données SELON sElement CAS "groupName" goXmlImport <- allouer un cXmlImport goXmlImport.PL_Statut_Changer(StAjouter) goXmlImport:m_GroupName = sData CAS "key" goXmlImport:m_Key = sData CAS "value" goXmlImport:m_Value = sData goXmlImport.PL_Data_Enregistrer(goErreur) //CAS "customerID" // bCustomerID = vrai //si GetGUIDid(sData) = "ACTIF" alors bCustomerID = vrai AUTRE CAS FIN FIN
// Il y a des balises ou des attributs pour cet élément ? SI XMLFilsExiste(sDocXML, XMLBalise + XMLAttribut) = Vrai ALORS // Sauve la position actuelle nPositionXML = XMLSauvePosition(sDocXML) // Se positionne sur le fils XMLFils(sDocXML) // Parcourt le fils PG_XML_IMPORT(sDocXML, nNiveau+1) // Se repositionne comme avant le positionnement sur le fils XMLRetourPosition(sDocXML, nPositionXML, XMLRPDéfaut) FIN // Suite du XML XMLSuivant(sDocXML) FIN
-- LH |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|