<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><category>pcsoft.fr.windev</category><copyright>Copyright 2026, PC SOFT</copyright><lastBuildDate>5 Apr 2019 04:39:44 Z</lastBuildDate><pubDate>7 Mar 2019 16:21:40 Z</pubDate><description>Bonjour à tous,&#13;
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.&#13;
&#13;
problème rencontré :&#13;
----------------------&#13;
 je ne récupère jamais son flux. il est toujours vide&#13;
j'ai fait le test d'un WebService (coté client) avec une fenetre et un bout de code et ça fonctionne.&#13;
j'ai fait un test avec l'utilitaire SOAP UI, ça ne fonctionne pas.&#13;
&#13;
&#13;
je ne sais plus quoi faire. Auriez-vous une idée ?&#13;
&#13;
merci à vous&#13;
LH&#13;
=============================&#13;
PROCÉDURE PushData(sFluxXML est une chaîne)&#13;
s_DOCXML			est une chaîne="DOCXML"&#13;
&#13;
sFichierXML			est une chaîne = "c:\temp\PushData_"+DateSys()+"_"+HeureSys()+".xml"&#13;
sFluxEntrant			est une chaîne = sFluxXML&#13;
sFluxReponse			est une chaîne&#13;
bResFlux				est un booléen = Faux&#13;
&#13;
fSauveTexte(sFichierXML,sFluxEntrant)&#13;
bCustomerID	= Faux&#13;
&#13;
QUAND EXCEPTION DANS &#13;
	//ouverture du document&#13;
	bResFlux = XMLDocument(s_DOCXML,sFluxEntrant)&#13;
	SI bResFlux = Faux ALORS PI_FluxReponse("200")&#13;
	&#13;
	//positionnement à la racine&#13;
	XMLRacine(s_DOCXML)&#13;
&#13;
	//parcours du document&#13;
	PG_XML_IMPORT(s_DOCXML)&#13;
&#13;
	//fin du document&#13;
	XMLTermine(s_DOCXML)&#13;
&#13;
	PI_FluxReponse("OK")&#13;
FAIRE&#13;
	bResFlux		= Faux&#13;
	PI_FluxReponse("100")&#13;
FIN&#13;
RENVOYER sFluxReponse&#13;
&#13;
&#13;
	PROCÉDURE INTERNE PI_FluxReponse(sErreurCode)&#13;
		SI PAS bResFlux ALORS&#13;
			sFluxReponse=[&#13;
				&lt;success&gt;false&lt;/success&gt;&#13;
				&lt;errorMessage&gt;%1&lt;/errorMessage&gt;&#13;
			]&#13;
			sFluxReponse = ChaîneConstruit(sFluxReponse,sErreurCode)&#13;
			&#13;
		SINON&#13;
			sFluxReponse=[&#13;
				&lt;success&gt;true&lt;/success&gt;&#13;
				&lt;errorMessage&gt;%1&lt;/errorMessage&gt;&#13;
			]&#13;
			sFluxReponse = ChaîneConstruit(sFluxReponse,sErreurCode)&#13;
		FIN&#13;
	FIN&#13;
&#13;
======================&#13;
PROCÉDURE PRIVÉE PG_XML_IMPORT(sDocXML, nNiveau=0)&#13;
nPositionXML	est un entier&#13;
sElement		est une chaîne&#13;
bAttribut		est un booléen&#13;
bBalise			est un booléen&#13;
sData			est une chaîne&#13;
&#13;
// Parcours de tous les éléments&#13;
XMLPremier(sDocXML)&#13;
TANTQUE PAS XMLEnDehors(sDocXML)&#13;
	// Récupère les données de l'élément&#13;
	sData = XMLDonnée(sDocXML)&#13;
	&#13;
	//Type d'élément&#13;
	bAttribut	= Faux&#13;
	bBalise		= Faux&#13;
	SELON XMLTypeElement(sDocXML)&#13;
		CAS XMLAttribut 		// Attribut affiché entre côtes&#13;
			sElement = XMLNomElément(sDocXML)&#13;
			bAttribut = Vrai&#13;
		CAS XMLBalise  			// Attribut affiché entre &lt; et &gt;&#13;
			sElement = XMLNomElément(sDocXML)&#13;
			bBalise = Vrai&#13;
		AUTRE CAS				// dont CAS XMLErreur&#13;
			sElement = "Erreur XML"&#13;
	FIN &#13;
	&#13;
	// Il y a des données pour cet élément ?&#13;
	SI ChaîneFormate(sData, ccSansPonctuationNiEspace + ccSansEspace + ccSansAccent) = "" ALORS&#13;
		// Pas de données&#13;
	SINON&#13;
		// OK données&#13;
		SELON sElement&#13;
			CAS "groupName"&#13;
				goXmlImport &lt;- allouer un cXmlImport&#13;
				goXmlImport.PL_Statut_Changer(StAjouter)&#13;
				goXmlImport:m_GroupName = sData&#13;
			CAS "key"&#13;
				goXmlImport:m_Key = sData&#13;
			CAS "value"&#13;
				goXmlImport:m_Value = sData&#13;
				goXmlImport.PL_Data_Enregistrer(goErreur)&#13;
			//CAS "customerID"&#13;
			//	bCustomerID = vrai&#13;
			//si GetGUIDid(sData) = "ACTIF" alors bCustomerID = vrai&#13;
			AUTRE CAS&#13;
		FIN&#13;
	FIN&#13;
&#13;
	// Il y a des balises ou des attributs pour cet élément ?&#13;
	SI XMLFilsExiste(sDocXML, XMLBalise + XMLAttribut) = Vrai ALORS&#13;
		// Sauve la position actuelle&#13;
		nPositionXML = XMLSauvePosition(sDocXML)&#13;
		// Se positionne sur le fils&#13;
		XMLFils(sDocXML)&#13;
		// Parcourt le fils&#13;
		PG_XML_IMPORT(sDocXML, nNiveau+1)&#13;
		// Se repositionne comme avant le positionnement sur le fils&#13;
		XMLRetourPosition(sDocXML, nPositionXML, XMLRPDéfaut)&#13;
	FIN&#13;
	&#13;
	// Suite du XML&#13;
	XMLSuivant(sDocXML)&#13;
FIN&#13;
&#13;
--&#13;
LH</description><ttl>30</ttl><generator>WEBDEV</generator><language>fr_FR</language><link>https://forum.pcsoft.fr/es-ES/pcsoft.fr.windev/224532-wd23-webservice-soap-recuperation-xml/read.awp</link><title>WD23 - WebService SOAP - Récupération XML</title><managingEditor>moderateur@pcsoft.fr (El moderador)</managingEditor><webMaster>webmaster@pcsoft.fr (El webmaster)</webMaster></channel></rss>
