PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Page de test Webservice avec paramètre contenant un flux XML
Page de test Webservice avec paramètre contenant un flux XML
Débuté par Stefffr, 17 mar. 2017 11:03 - 3 réponses
Posté le 17 mars 2017 - 11:03
Bonjour à tous,

Connaissez-vous une astuce pour que la page de test d'un webservice générée par windev puisse accepter un flux xml dans un paramètre (autrement dit, qu'elle entoure automatiquement le contenu par un <![CDATA[ ... ]]> ) ?

En l'état, j'ai défini mon paramètre comme étant de type chaîne, mais si depuis la page de test je lui passe du xml, j'obtiens logiquement cette erreur :

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>Le document XML n'a pas pu être chargé.</faultstring>
<detail>Que s'est-il passé ?
Le document XML n'a pas pu être chargé.

Code erreur : 40057
Niveau : erreur non fatale (EL_ONRETURN)

Message d'erreur système :
Ligne 1, Colonne 86 : XML declaration allowed only at the start of the document

Dump de l'erreur du module 'wd190xml.dll' (19.0.68.0).
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Le code de construction de la requête généré par windev :

function construitxml()
{
var requete;
requete="";

requete = requete + "";
requete = requete + document.valeur.PARAM1.value;
requete = requete + "";

requete = requete + "
";
document.xmlform.xml.value=requete;
document.xmlform.action.value="urn:WS_MONWS/Test";
document.xmlform.submit();
}


Merci à vous.
Stéphane
Posté le 17 mars 2017 - 11:33
Désolé des bouts de code JS ont été supprimés lors du post. Le code en entier :

https://www.dropbox.com/s/w1ykdbc5yevhg1j/erreur_ws.png?dl=0
Posté le 17 mars 2017 - 11:57
Bonjour

Pas testé mais...

Et si tu mettais dans ta chaine directement <![CDATA[ ... ]]> (ou une
variante avec ton contenu XML dedans ?


Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com

Le 3/17/2017 à 5:03 AM, Stefffr a écrit :
Bonjour à tous,

Connaissez-vous une astuce pour que la page de test d'un webservice
générée par windev puisse accepter un flux xml dans un paramètre
(autrement dit, qu'elle entoure automatiquement le contenu par un
<![CDATA[ ... ]]> ) ?

En l'état, j'ai défini mon paramètre comme étant de type chaîne, mais si
depuis la page de test je lui passe du xml, j'obtiens logiquement cette
erreur :

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>Le document XML n'a pas pu être chargé.</faultstring>
<detail>Que s'est-il passé ?
Le document XML n'a pas pu être chargé.

Code erreur : 40057
Niveau : erreur non fatale (EL_ONRETURN)

Message d'erreur système :
Ligne 1, Colonne 86 : XML declaration allowed only at the start of the
document

Dump de l'erreur du module 'wd190xml.dll' (19.0.68.0).
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Le code de construction de la requête généré par windev :

function construitxml()
{
var requete;
requete="<soap:Envelope
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"
xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\"><soap:Body>";

requete = requete + "<PARAM1 xsd:type=\"xsd:string\"
xmlns=\"urn:WS_MONWS\">";
requete = requete + document.valeur.PARAM1.value;
requete = requete + "</PARAM1>";

requete = requete + "</soap:Body></soap:Envelope>";
document.xmlform.xml.value=requete;
document.xmlform.action.value="urn:WS_MONWS/Test";
document.xmlform.submit();
}


Merci à vous.
Stéphane
Posté le 17 mars 2017 - 21:42
Bonsoir, merci pour ta réponse, mais je souhaitais éviter cette manipulation justement.
J'ai finalement modifié en dur la fonction construitxml() dans les pages de test, l'inconvénient est que cela est écrasé à chaque nouvelle génération du webservice.

Stéphane