PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Problème WebService
Problème WebService
Iniciado por Jack, 11,mar. 2019 11:59 - 2 respuestas
Miembro registrado
55 mensajes
Publicado el 11,marzo 2019 - 11:59
Bonjour
Je reformule ma demande, peut-être pas assez claire.
Je coince sur la récupération d'enregistrements multiples via un webservices.

J'ai crée (en test pour le moment) un webservices en Windev23, e il est publié sur un serveur DINAO. Aucun soucis pour faire du httpost, le boitier IoT envoi bien ses données toutes les 30 secondes et des enregistrements sont bien crées dans la table.

Par contre, lorsque je veux récupérer tous les enregistrements via httpget via Windev24, j'obtiens X fois (x= nombre de record ex si j'ai 30 enregistrements je vais avoir 30 fois la même ligne dans mon tableau) le même enregistrement, il faut que je relance la procédure de lecture pour obtenir l'enregistrement suivant (et encore 30 lignes identiques).
J'espère avoir été clair !

Voici mon code Windev23 (via l'assistant car les process POST et GET sont ultra basiques pas de traitement) et la méthode GET en WinDev24 pour récupérer les data
Encore merci
Cdlt
Cyril

//Déclaration dans le code du webservice
MDataTrucks est une Classe <MAPPING=DataTrucks>

// Le code se trouvant entre <MAPPING> et <FIN> est généré automatiquement.
// Il sera effacé et recréé entièrement à chaque génération depuis l'analyse.
<MAPPING>
m_nIDDataTrucks est un entier sur 8 octets <MAPPING=IDDataTrucks, clé unique , Sérialise=Faux>
m_sImmat est une chaîne ANSI <MAPPING=Immat , Sérialise="Immat">
m_rLatitude est un réel sur 4 octets <MAPPING=Latitude , Sérialise="Latitude">
m_rLongitude est un réel sur 4 octets <MAPPING=Longitude , Sérialise="Longitude">
m_rVitesse est un réel sur 4 octets <MAPPING=vitesse , Sérialise="vitesse">
m_dDateRecord est une Date <MAPPING=dateRecord , Sérialise="dateRecord">
m_hHeureRecord est une Heure <MAPPING=HeureRecord , Sérialise="HeureRecord">
<FIN>

FIN


// La procédure du Web service pour lire tous les record
Procedure PUBLIQUE GLOBALE LectureTous() : chaîne ANSI

// Vérification de l'authentification.
SI Authentification() = Faux ALORS
// Echec de l'authentification.
// Le code a rencontré en une erreur. Le code de traitement des erreurs fait un appel de WebserviceEcritCodeHTTP : le serveur d'application WEBDEV va ignorer la valeur de retour de la procédure.
RENVOYER ""
FIN

tabDataTrucks est un tableau de MDataTrucks
POUR TOUT MonFichierMappé
clDataTrucks est un MDataTrucks
clDataTrucks.FichierVersMemoire()

tabDataTrucks.Ajoute(clDataTrucks)
FIN

sContenuEnregistrementEnJSON est une chaîne ANSI
Sérialise(tabDataTrucks, sContenuEnregistrementEnJSON, psdJSON)

// On retourne directement une chaîne que le serveur d'application va considérer comme la réponse.
RENVOYER sContenuEnregistrementEnJSON


// Code de la fenêtre de test
DataGPS est une structure
nIDGPS est un entier sur 8 octets
immat est une chaîne
latitude est un réel
longitude est un réel
vitesse est un réel
dateGPS est une Date
heureGPS est une Heure
FIN
tabListeTrajet est un tableau de DataGPS


//Code du bouton de test pour lire les data
DemandeListeTrajet est un restRequête
RecupListeTrajet est un restRéponse


DemandeListeTrajet.URL="www.URLSITE.COM/TrackingsTruckTous"
DemandeListeTrajet.Méthode=httpGet
DemandeListeTrajet.Utilisateur="XXXXX"
DemandeListeTrajet.MotDePasse="YYYY"

RecupListeTrajet=RESTEnvoie(DemandeListeTrajet)
Désérialise(tabListeTrajet,RecupListeTrajet.Contenu,psdJSON)
TableAffiche(TABLE_TabListeTrajet,taInit)
Miembro registrado
1.002 mensajes
Publicado el 11,marzo 2019 - 12:08
Bonjour,

Je pense que ton probleme vient de ta ligne

clDataTrucks.FichierVersMemoire()

Dans la doc :
Remarque : La fonction FichierVersMémoire n'effectue aucune lecture du fichier de données. C'est la valeur de l'enregistrement chargé en mémoire qui est utilisée pour initialiser les valeurs des membres. Il faut donc qu'un enregistrement soit au préalable chargé en mémoire (fonctions HLit, HLitRecherche, HLitPremier, ...).

Essaye de charger ta variable manuellement au lieu d'utiliser la fonction FichierVersMemoire

jordan
Miembro registrado
55 mensajes
Publicado el 11,marzo 2019 - 13:18
Bonjour Jordan
Merci de ta réponse, je vais tester cela je te tiendrai informé
Excellente journée
Cdlt
Cyril