|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| WD23 - WebService SOAP - Récupération XML |
| Iniciado por Lionel H., 07,mar. 2019 16:21 - No hay respuesta |
| |
| | | |
|
| |
Miembro registrado 7 mensajes |
|
| Publicado el 07,marzo 2019 - 16:21 |
Bonjour à tous, j'ai réalisé en WD23 un WebService SOAP (coté serveur) avec une méthode : PushDATA qui consiste à récupérer un Flux XML envoyé par mon Fournisseur, puis lecture du contenu avec une procédure PG_XML_IMPORT.
problème rencontré : ---------------------- je ne récupère jamais son flux. il est toujours vide j'ai fait le test d'un WebService (coté client) avec une fenetre et un bout de code et ça fonctionne. j'ai fait un test avec l'utilitaire SOAP UI, ça ne fonctionne pas.
je ne sais plus quoi faire. Auriez-vous une idée ?
merci à vous 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) bCustomerID = Faux
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 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|