PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV Mobile 2024 → [WM17] Webservices utilisation Sérealise et Désérealise
[WM17] Webservices utilisation Sérealise et Désérealise
Iniciado por Omar El Moussaid, out., 29 2012 7:07 PM - 4 respostas
Publicado em outubro, 29 2012 - 7:07 PM
Bonjour,
Export_visite est une procédure webdev héberger sur mon Pc back office et qui interagi avec un serveur SQLServer, cette procédure sera appelé a partir de la tablette.
J'ai essayé d'utiliser la sérialisation et désérialisation voila le code:

Coté Tablette:

tableVisite est tableau de objet CVisite
vis est un objet CVisite
bufxml est Buffer
comp est objet CCompagne
ope est objet COperateurs
ver est objet CVerger

POUR TOUT Req_Get_Visite_Non_Valide

//Visite
HLitRecherche(Compagne,CodeCompagne,Req_Get_Visite_Non_Valide.CodeCompagne)
comp=Compagne
vis.refCodeCompagne=comp
//vis.CodeCompagne=Req_Get_Visite_Non_Valide.CodeCompagne
HLitRecherche(Operateurs,CodeOperateur,Req_Get_Visite_Non_Valide.CodeOperateur)
ope=Operateurs
vis.refCodeOperateur=ope
//vis.CodeOperateur=Req_Get_Visite_Non_Valide.CodeOperateur
HLitRecherche(Verger,CodeVerger,Req_Get_Visite_Non_Valide.CodeVerger)
ver=Verger
vis.refCodeVerger=ver
//vis.CodeVerger=Req_Get_Visite_Non_Valide.CodeVerger
vis.CodeVisite=Req_Get_Visite_Non_Valide.CodeVisite
vis.Date_Visite=Req_Get_Visite_Non_Valide.Date_Visite
vis.Fonction=Req_Get_Visite_Non_Valide.Fonction
vis.Objectife=Req_Get_Visite_Non_Valide.Objectife
vis.Presence_De=Req_Get_Visite_Non_Valide.Presence_De
vis.Visite_Valide=Vrai
Ajoute(tableVisite,vis)

FIN
POUR TOUT vis DE tableVisite
Info(vis.CodeVisite)
FIN
b est chaîne
Sérialise(tableVisite,bufxml,psdXML)
b=Import_Export2.Export_Visites(bufxml)
Info(b)
Info("done")


Coté Pc back office :

Procedure Export_Visites(bufferxml est Buffer)
nIdFich est entier=fOuvre("C:\Documents and Settings\omar\Bureau\yyy\log.txt",foLectureEcriture)
tableVisite est tableau de objet CVisite
refCodeVisite est un objet CVisite
Désérialise(tableVisite,bufferxml,psdXML)
fEcrit(nIdFich,bufferxml+"/////////////////"+tableVisite..Occurrence)
fFerme(nIdFich)
POUR TOUT refCodeVisite DE tableVisite
Visite.CodeCompagne=refCodeVisite.refCodeCompagne.CodeCompagne
Visite.CodeOperateur=refCodeVisite.refCodeOperateur.CodeOperateur
Visite.CodeVerger=refCodeVisite.refCodeVerger.CodeVerger
Visite.CodeVisite=refCodeVisite.CodeVisite
Visite.Date_Visite=refCodeVisite.Date_Visite..PartieDate
Visite.Fonction=refCodeVisite.Fonction
Visite.Objectife=refCodeVisite.Objectife
Visite.Presence_De=refCodeVisite.Presence_De
Visite.Visite_Valide=refCodeVisite.Visite_Valide
HAjoute(Visite)
FIN

RENVOYER tableVisite..Occurrence


Ce que je trouve dans le fichier fichier txt (contenu de buffer):
<?xml version="1.0"?>
<DOCUMENT xmlns:SOAP_ENC="http://schemas.xmlsoap.org/soap/encoding/">
<tableVisite SOAP_ENC:arrayType="tableVisite[1]">
<item>
<ns1:CVisite xmlns:ns1="urn:Import_Export2"><ns1:refCodeCompagne xmlns:ns1="urn:Import_Export2"><CodeCompagne>2</CodeCompagne><Libelle>Compagne11/12</Libelle><Active>1</Active><Debut>2011-01-01T00:00:00.000</Debut><Fin_Compagne>2012-01-01T00:00:00.000</Fin_Compagne></ns1:refCodeCompagne><ns1:refCodeOperateur xmlns:ns1="urn:Import_Export2"><CodeOperateur>1</CodeOperateur><Nom>omar el moussaid</Nom><Pass>123</Pass><Tel>0661659530</Tel><Adresse>N°18 rue 454 les fonctionnaires les amicales agadir</Adresse><Email>
omar.el.moussaid@gmail.com</Email><Actif>1</Actif></ns1:refCodeOperateur><ns1:refCodeVerger xmlns:ns1="urn:Import_Export2"><CodeVerger>221</CodeVerger><Ref>Y</Ref><Nom>Nahda</Nom><Superficie>53</Superficie><Certifier>1</Certifier><Actif>1</Actif></ns1:refCodeVerger><CodeVisite>12102011</CodeVisite><Date_Visite>2012-10-20T00:00:00.000</Date_Visite><Fonction>ttttttt</FONCTION><Objectife>1</Objectife><Presence_De>tttt</Presence_De><Visite_Valide>True</Visite_Valide></ns1:CVisite>
</Item>
</tableVisite>
</DOCUMENT>

tableVisite..Occurrence donne 1 ,Mais je n'arrive pas à parcourir le tableau, l'erreur viens de Désérialise?
Merci
Publicado em outubro, 30 2012 - 11:16 AM
j'ai oublié de spécifier que je travail sur Android 4.0.3
Membro registado
11 mensagems
Publicado em novembro, 04 2012 - 3:37 AM
Bonsoir Omar
J'ai eu la meme erreur avec mon webservce, j'obtiens l'erreur suivante :
Appel WL :
Traitement de 'Clic sur Bouton1' (Fenêtre1.Bouton1), ligne 18, thread 0
Fonction 'Désérialise', syntaxe 0

Que s'est-il passé ?
Format de sérialisation incorrect.

Code erreur : 2601
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd170vm.dll' (17.0.199.3).
Identifiant des informations détaillées (.err) : 2601
Informations de débogage :
Erreur interne
Fonction (0,124)
Informations supplémentaires :
EIT_PILEWL :
Clic sur Bouton1 (Fenêtre1.Bouton1), ligne 18
Je vous prie de m'informer au cas ou vous avez trouver une solution
Bonne soirée
Publicado em novembro, 06 2012 - 3:22 PM
Je sais pas si ca peut vous aider mais j'avais le meme genre d'erreur et cela ne venait pas de serialise ou deserialise mais simplement du faite qu'il fait envoyer une structure avec des tableau de structure et non envoyer un tableau de structure au webservice.
Par ailleur pour ma part je rencontre un probleme de recuperation de geoposition dans un thread avec android. avez vous un conseil a ce sujet? j'ai posté un post sur le forum mais sans reponse.
Publicado em novembro, 07 2012 - 2:28 PM
Bonjour zinehom j'ai basculer vers les tableau de chaine multi-dimension exemple:

coté Tablette:
Req_Get_Visite_Non_Valide.ParamOpérateur=codeop //codeoperateur
HExécuteRequête(Req_Get_Visite_Non_Valide)
SI HNbEnr(Req_Get_Visite_Non_Valide)<>0 ALORS
bufxml est un Buffer
tableVisite est un tableau dynamique de [HNbEnr(Req_Get_Visite_Non_Valide),8] chaîne ANSI
j est un entier=1
POUR TOUT Req_Get_Visite_Non_Valide
tableVisite[j,1]=Req_Get_Visite_Non_Valide.CodeCompagne
tableVisite[j,2]=Req_Get_Visite_Non_Valide.CodeOperateur
tableVisite[j,3]=Req_Get_Visite_Non_Valide.CodeVerger
tableVisite[j,4]=Req_Get_Visite_Non_Valide.CodeVisite
tableVisite[j,5]=Req_Get_Visite_Non_Valide.Date_Visite..PartieDate
tableVisite[j,6]=Req_Get_Visite_Non_Valide.Fonction
tableVisite[j,7]=Req_Get_Visite_Non_Valide.Objectife
tableVisite[j,8]=Req_Get_Visite_Non_Valide.Presence_De
j++
FIN
Sérialise(tableVisite, bufxml,psdXML)
Import_Export.Export_Visite(bufxml)


coté serveur (webservice):

Procedure Export_Visite( bb est Buffer)
resultat est un tableau dynamique de 0 par 0 chaînes
Settings\omar\Bureau\yyy\log.txt",foLectureEcriture)
Désérialise( resultat, bb, psdXML)
i est un entier =1
TANTQUE i <= TableauInfo(resultat,tiNombreLignes)
Visite.CodeCompagne=resultat[i,1]
Visite.CodeOperateur=resultat[i,2]
Visite.CodeVerger=resultat[i,3]
Visite.CodeVisite=resultat[i,4]
Visite.Date_Visite=resultat[i,5]
Visite.Fonction=resultat[i,6]
Visite.Objectife=resultat[i,7]
Visite.Presence_De=resultat[i,8]
HAjoute(Visite)
i++
FIN