PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Windev Mobile 18 - Webservice nusoap type inconnu
Windev Mobile 18 - Webservice nusoap type inconnu
Débuté par Cadersah Yanice, 21 nov. 2016 21:18 - 1 réponse
Posté le 21 novembre 2016 - 21:18
Bonjour,

Je suis un grand nouveau sur Windev et Windev mobile, je crée une application qui exploite un web service héberger sur un serveur Apache/PHP/MYSQL, et généré par le module Nusoap de PHP. Le web service fonctionne très bien puisqu'il est utilisé dans une application PC qui est l'homologue de celle que je développe en ce moment. Mon webservice me sert en fait d'accès à ma base de données, il contient plusieurs méthodes Get qui revoit un tableau de complexe type selon une condition passée en paramètre. Chaque complexe type correspond à l'une des tables de ma base de données.

Exemple :

cli est un clientArray

cli = SIMA_SUPPORT_WEBSERVICES_get.getCli("WHERE id_cli=55")
// ici l'on reçoit un tableau de complexType client qui représente les différente ligne de dans la table correspondante

//Pour accéder aux valeurs je fais :
Info(cli.client[1].id_cli)
// ou
Info(cli.client.id_cli)


Je précise que cette méthode fonctionne parfaitement sur Windev 18 dans le mode Test et une fois l'application exportée en .exe, sur Windev Mobile en mode Test mais une fois l'application exportée en .APK et déployée, le message suivant apparaît :

"FATAL ERROR..... le membre "client" est inconnue" (celà vaut pour l'exemple plus haut).

j'ai déjà vérifié en faisant mon WS retourner des valeurs simples, que l'application mobile avait bien accès à ses services. Il semblerait qu'une fois l'export fait, qu'elle ne reconnaisse plus mes complexTypes.

Exemple de serveur soap et de complexType que j'utilise :






Windev reconnait mes complexeTypes dans l'IDE :







Merci d'avance pour votre aide.
Posté le 22 novembre 2016 - 12:12
Bonjour Yanice,

tu es tombé sur un problème récurrent : Le code en mobile a des
possibilités plus limitées que le code en windev pur. Ily a tout un tas
de raisons pour ca, le fait que mobile est plus récent que windev et que
tout n'est pas encore porté, le fait que certaines choses ne sont pas
compatibles avec le portage en java ou objective C, etc...

Il reste que le fait que toutes les plateformes ne sont pas égales, et
que pour tout développement multi-plateforme, il faut apprendre à se
limiter à un noyau commun.

Donc, par rapport à ton problème précis, voici comment je l'ai résolu
dans WXReplication (open source, dispo sur mon site):
- au lieu d'utiliser un tableau, j'utilise une chaine
- dans cette chaine, je stocke les valeurs de mes champs des enregs sous
un format de type ini (NOM=VALEUR)
- les blobs sontun cas particulier et sont encodés en base 64 avant
inclusion dans la chaine

De cette manière, je passe outre aux limitations des tableaux, des
webservices, du XML et de JSON qui existent sur différentes plate forme.

Si tu veux t'inspirer de mon code, ou le réutiliser tel quel, il est
dispo sur mon site

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 11/21/2016 à 3:18 PM, Cadersah Yanice a écrit :
Bonjour,
Je suis un grand nouveau sur Windev et Windev mobile, je crée une
application qui exploite un web service héberger sur un serveur
Apache/PHP/MYSQL, et généré par le module Nusoap de PHP. Le web service
fonctionne très bien puisqu'il est utilisé dans une application PC qui
est l'homologue de celle que je développe en ce moment. Mon webservice
me sert en fait d'accès à ma base de données, il contient plusieurs
méthodes Get qui revoit un tableau de complexe type selon une condition
passée en paramètre. Chaque complexe type correspond à l'une des tables
de ma base de données.

Exemple :
cli est un clientArray

cli = SIMA_SUPPORT_WEBSERVICES_get.getCli("WHERE id_cli=55")
// ici l'on reçoit un tableau de complexType client qui représente
les différente ligne de dans la table correspondante
//Pour accéder aux valeurs je fais : Info(cli.client[1].id_cli)
// ou Info(cli.client.id_cli)


Je précise que cette méthode fonctionne parfaitement sur Windev 18 dans
le mode Test et une fois l'application exportée en .exe, sur Windev
Mobile en mode Test mais une fois l'application exportée en .APK et
déployée, le message suivant apparaît :
"FATAL ERROR..... le membre "client" est inconnue" (celà vaut pour
l'exemple plus haut).

j'ai déjà vérifié en faisant mon WS retourner des valeurs simples, que
l'application mobile avait bien accès à ses services. Il semblerait
qu'une fois l'export fait, qu'elle ne reconnaisse plus mes complexTypes.

Exemple de serveur soap et de complexType que j'utilise :






Windev reconnait mes complexeTypes dans l'IDE :







Merci d'avance pour votre aide.