Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
codeswindev.over-blog.com

Petit blog sur le Wlangage de PCSoft Je vais essayer dans ce petit blog à illustrer des exemples de codage en Wlangage, des trucs et astuces utiles sur les environnements Windev, Webdev et Windev Mobile. Je partage, si ça peut aider la communauté, au fur et à mesure que je découvrirai cet AGL. J'essayerai de ne pas être trop redondant avec ce qui est facile à trouver dans la doc. Bonne lecture.

Exemple de consommation du Webservice Météo Avec Windev

Bonjour tout le monde,
Comme indiqué sur le titre de cet article, je vais vous présenter une technique pour récupérer la météo d’une ville précise via les webservices sous Windev.
Cette astuce peut s’utiliser sur les autres environnements de développement de l’AGL de PCSoft, je cite sur Webdev et Windev Mobile.
Le Webservice que j’ai manipulé et que je juge simple à consommer est du site https://openweathermap.org parmi les centaines des webservices se trouvant sur la toile.
Donc tout d’abord, il vous faut vous rendre vers ce site et créer un compte, ce dernier sera votre point d’identification auprès des services du dit site.
 

 
 
Remplissez les champs nécessaires et complétez votre inscription
 
 
 
 
Le site vous générera une clé par défaut à utiliser avec la possibilité de créer d’autres nouvelles.
Cette clé sera notre laisser-passer pour toute requête du service météo à travers notre Webservice.
 
Dans le lien ci-dessous, Vous trouverez toutes les informations nécessaires et les différentes syntaxes pour manipuler le web service météo.
 
 
    Mise en pratique du service météo (current weather) sur notre application Windev, Webdev ou Windev mobile.

 

Pour mon cas j’ai opté pour le concept de créer une fenêtre interne que je vais appeler à partir d’un champ TDB (tableau de bord).
Voilà, j’ai créé mes différents champs dont j’aurai besoin pour afficher tous les services que je souhaite visualiser.
 
Voici les différents champs avec leurs libellés
 

 

Et voici les plans utilisés
 
Et voici un aperçu du code que j’ai implémenté sur ma fenêtre interne (FI_METEO)





 
 
Voici le résultat après la consommation du Webservice
 
        

*PS: Juste une petite remarque au sujet des valeurs récupérées 
  - La vitesse du vent s'exprime en Km/h et pas comme j'ai indiqué sur mon widget (en %)
  - La même chose pour les précipitations, devront s'exprimer en mm et pas en %.
 

A la fin, je vous laisse avec le code source utilisé pour l’adapter suivant vos besoins.
 
 
Bon développement avec Windev
 
// Déclarations globales de la fenêtre interne FI_METEO
PROCÉDURE MaFenêtre()
stCondMeteo est une Structure
       sCodeCondMeteo est une chaîne
       sLibCondMeteo est une chaîne
FIN
bpremierChargement est un booléen = Vrai
MastCondMeteo est une stCondMeteo
sMonTabCondMeteo est un tableau de stCondMeteo
TableauSupprimeTout(sMonTabCondMeteo)
plAlimenterTabCondMeteo()
 
//---------- Fin d’initialisation de FI_METEO
IMG_MAJ = IMG_MAJ_GO
sCodeMeteo,sDonneeXML est une chaîne
ErreurHTTP est une chaîne
HLitPremier(Societe,SOCLEUNIK)
SI HEnDehors(Societe) ALORS HRAZ(Societe)
pVille est une chaîne = SansEspace(Societe.VILLE)
SI pVille~="" ALORS pVille ="Paris"
SI HTTPRequête("http://api.openweathermap.org/data/2.5/weather?q="+pVille+"&mode=xml&units=metric&APPID=41780205631dd80057c90440e632ba75") ALORS
       sResultat est chaîne = HTTPDonneRésultat(httpRésultat)
FIN
SI Taille(sResultat) = 0 ALORS
       // Il y a eu une erreur du serveur Web,
       // le détail de l'erreur est dans l'entête de la page
       ErreurHTTP = HTTPDonneRésultat(httpEntête)
       Erreur(ErreurHTTP)
       LIB_Etat = "Problème de connexion avec le service Météo!!"+RC+"Réessayer plus tard..."
FIN
Trace(sResultat)
 
XMLTermine("CdeXML")
// Création du document XML
XMLDocument("CdeXML"sResultat)
SI ErreurDétectée = Vrai ALORS
       Erreur("Erreur lors de la création du document XML")
       RETOUR
FIN
 
// Recherche des conditions météorologiques
sDonneeXML = PI_DonnéeXML("weather","number")
SI sDonneeXML<>"" ALORS
       sCodeMeteo = sDonneeXML
       ResIndice est un entier
       ResIndice = TableauCherche(sMonTabCondMeteotcLinéairePremier,"sCodeCondMeteo",sCodeMeteo)
       SI ResIndice>0 ALORS
             LIB_Etat = sMonTabCondMeteo[ResIndice].sLibCondMeteo
       SINON
             LIB_Etat = "Etat non déterminé"
       FIN
       IMG_Météo =  "http://openweathermap.org/img/w/"+XMLDonnée("CdeXML","icon")+".png"
SINON
             LIB_Etat = "Etat non déterminé"   
FIN
 
// Afficher l'image météo du jour
sDonneeXML = PI_DonnéeXML("weather","icon")
SI sDonneeXML<>"" ALORS
       IMG_Météo = "http://openweathermap.org/img/w/"+sDonneeXML+".png"
SINON
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
M
Possible d'avoir le projet WinDev lui-même ?<br /> Car il y a des éléments qui restent sans explication.<br /> De même le code que vous avez donné est incomplet...
Répondre
A
Bonjour Mexence,<br /> Je pense pas qu'il reste des éléments sans explication. Ce qui manque dans le code source se trouve bien sur les captures au dessus. Sinon, pour le projet, la partie évoquée sur le blog, je l'ai extrait d'un autre projet dont j'ai pas le droit de le partager.
L
bonjour,<br /> je pence qu'il manque des information dans votre code, ont ne vois pas toute les procédure local
Répondre
A
Ce qui manque se trouve belle et bien sur les captures