PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → [WM20] Consomation d'un webservice
[WM20] Consomation d'un webservice
Débuté par Claude, 04 mai 2017 13:43 - Aucune réponse
//hostimage.webdev.info/avatars/mzqftNswGWU7DmQy8CZMg
Membre enregistré
2 messages
Posté le 04 mai 2017 - 13:43
Bonjour à tous,
Je suis avec en version 20 de WM et je dois développer une appli smartphone Android et iOS.
Je rencontre un souci de traitement en boucle de la structure que me retourne un Webservice et je galère depuis plusieurs jours pour trouver la solution.
J'ai importer le WSDL : http://www.vnf.fr/avisbat/services/RechercheAvisSOAP…
Dans un premier temps tout semble fonctionner, importation du WSDL, interrogation et réception de la réponse structurée du WebService.

ws_RechercheAvisIn est un RechercheAvisIn
...
ws_RechercheAvisOut est un RechercheAvisOut
ws_RechercheAvisOut = rechercheAvis(ws_RechercheAvisIn)
SI ErreurDétectée = Vrai ALORS
Multitâche(-1)
SablierRéseau(Faux)
Erreur("Erreur du web service rechercheAvis().")
RETOUR
FIN
...
// Je boucle dans le premier niveau de item de la réponse sans souci.
nNombreAvisBat = ws_RechercheAvisOut.item..Occurrence
SI nNombreAvisBat > 0 ALORS
// pour tout les avis retournés par le WS
POUR ABitem = 1 _A_ nNombreAvisBat
Trace("avisNum : "+ws_RechercheAvisOut.item[ABitem].avisNum)
...
// Le problème est qu'ici je n'arrive pas à obtenir le nombre d’occurrence de la sous bloc de données.
//--- LES xx INCIDENCES de l'AvisBat -----------------------------
nNombreIncidence = ws_RechercheAvisOut.item[ABitem].incidenceList.item..Occurrence
// J'ai essayé sous windev 20 avec le code suivant et là malgré un warning ça fonctionne !! mais pas sous WM.
//ou nNombreIncidence = ws_RechercheAvisOut.item[ABitem].incidenceList.incidence..Occurrence
....
FIN
sinon
erreur("Aucun avis retourné")
fin

Je soupçonne une incohérence entre le WSDL et la réponse xml.
Un essai avec le soft Soapui me retourne bien la réponse xml attendue, mais en analysant le Schema avec 'TestCase' cette réponse il me donne plusieurs erreurs :
[Schema Compliance] Expected element 'item' instead of 'incidence' here in element incidenceList.

J'ai bien voulue essayer avec les procédures SOAP (SOAPExécuteXML) de windev, mais elles ne sont pas implémentées dans Windev Mobile.

J'ai également fait des essais avec HTTPRequête, mais là j'ai un message d'erreur de retour que je n'arrive pas à résoudre :

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">01SLAS-PROD6</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

Avez-vous une idée qui me permettrait d'avancer sur le sujet ?

En vous remerciant d'avance
Claude