PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Procédure de traitement des données JSON
  • Page renvoyant les données au format JSON
  • IMPORTANT : Validité du JSON
  • Sécurité
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
JSONExécuteExterne (Fonction)
En anglais : JSONExecuteExternal
Avertissement
A partir de la version 22, il est conseillé d'utiliser la fonction JSONExécute. En effet, les Webservices retournant des données au format JSON utilisent désormais le protocole CORS pour simplifier la sécurité.
Appelle une URL serveur externe qui retourne des données au format JSON (JavaScript Object Notation). Les données serveur sont évaluées et transmises à la fonction de rappel (callback) sous forme d'un objet.
Cette fonction n'est pas bloquante. Les autres traitements continuent de s'exécuter normalement (que les données soient récupérées ou non).
Dès que le résultat est disponible, la fonction JSONExécuteExterne appelle automatiquement une procédure navigateur permettant de récupérer ce résultat.
Exemple
// Exécution d'un service JSON sur google
// Google attend le nom de la procédure qui va traiter l'objet JSON
// dans le paramètre qui a pour nom "callback"
// et ici la procédure qui va traiter l'objet s'appelle "AgendaGoogle"
JSONExécuteExterne(...
"http://www.google.com/calendar/feeds/monsite@gmail.com" + ...
"/public/full?alt=json-in-script&orderby=starttime&max-results=15&" + ...
"singleevents=true&sortorder=ascending&futureevents=true", ...
"callback", AgendaGoogle)

// Cela génerera une URL d'appel à la fonction json de ce type :
// http://www.google.com/calendar/feeds/monsite@gmail.com/public/full?alt
// =json-in-script&orderby=starttime&max-results=15&singleevents=true&
// sortorder=ascending&futureevents=true&callback=AgendaGoogle
// Exécution d'un service JSON sur une page AWP
JSONExécuteExterne(...
"http://monsite/monsite_WEB/FR/PAGE_Objet.awp?id=12", ...
"JsonCallback", ReponseFonction)
// La page AWP attend donc un paramètre qui se nomme "JsonCallback"
// qui contiendra le nom de la procédure a exécutée en retour
Syntaxe
JSONExécuteExterne(<URL de la page> , <Nom du paramètre> , <Nom de la procédure>)
<URL de la page> : Chaîne de caractères (avec guillemets)
URL de la page renvoyant des données au format JSON.
<Nom du paramètre> : Chaîne de caractères (avec guillemets)
Nom du paramètre que WEBDEV va ajouter à l'URL pour indiquer au serveur contacté le nom de la procédure de traitement des données JSON. Le nom de ce paramètre dépend de la documentation de la fonction JSON appelée, il s'agit souvent de "callback".
<Nom de la procédure> : Chaîne de caractères (avec ou sans guillemets)
Nom de la procédure navigateur (globale ou locale) qui effectue le traitement des données JSON.
Cette procédure est le la forme :
PROCEDURE <Procédure navigateur> (<Résultat JSON de l'appel>)
Le paramètre passé à cette procédure est un objet dynamique, contenant les données JSON. Il doit être indiqué dans la déclaration de la procédure.
Remarques

Procédure de traitement des données JSON

Le résultat JSON doit être renvoyé sous la forme de code JSON entouré d'un appel à la procédure permettant de traiter ces données.
Le nom de cette procédure est directement transmis dans l'URL de l'appel à la page en tant que paramètre. Le nom de ce paramètre est spécifié dans la fonction JSONExécuteExterne.
Par exemple :
JSONExécuteExterne("http://MonSite/MonSite_WEB/FR/PAGE_Objet.awp?id=12", ...
"JsonCallback", ReponseFonction)
permettra de construire l'URL suivante :
"http://MonSite/MonSite_WEB/FR/PAGE_Objet.awp?id=12&JsonCallback=ReponseFonction"
// WEBDEV a ajouté : &JsonCallback=ReponseFonction en plus
// à la fin de l'URL pour indiquer la fonction de retour

Page renvoyant les données au format JSON

La page renvoyant les données au format JSON peut être une page AWP, une page PHP ou tout autre type de page.
Si cette page est une page WEBDEV, cette page peut être au format AWP ou PHP. Cette page doit renvoyer les données dans un format JSON avec la fonction ChaîneAffiche. Il est également nécessaire d'utiliser la fonction ChaîneVersUTF8 pour obtenir un format valide.
Par exemple, le code suivant permet de créer la chaîne qui sera renvoyée. Cette chaîne contient le code permettant de définir un objet et un tableau. Le code utilisé est du code Javascript.
La fonction PageParamètre permet de traiter le cas d'un appel externe. Dans ce cas, les données JSON renvoyées sont formatées avec le nom de la procédure de traitement.
// Chaîne contenant un objet JSON
sObjet est une chaîne = [
%1 ( {id: 12,
liste:  [
{nom: "smith", prénom: "john"},
{nom: "dupond", prénom: "marie"},
{nom: "martin", prénom: "lauré"}]
} );
]

// Ajout du nom de la procédure callback (à la place de %1)
// Ce nom est attendu dans un paramètre qui a pour nom "JsonCallback"
sObjet = ChaîneConstruit(sObjet, PageParamètre("JsonCallback"))

// Renvoie la chaîne de l'objet JSON
// avec le nom de la procédure javascript à appeler
ChaîneAffiche(ChaîneVersUTF8(sObjet))

IMPORTANT : Validité du JSON

Aucune vérification n'est effectuée sur la validité du JSON reçu depuis le serveur. Il est nécessaire de s'assurer que la page appelée est une page de confiance pour ne pas risquer d'avoir une injection de JavaScript dans la page courante.

Sécurité

Pour renforcer la sécurité des données transmises, il est possible d'utiliser une page sécurisée (URL de type https).
Composante : WDJS.DLL
Version minimum requise
  • Version 14
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire