Il n'est pas toujours évident de déterminer le bon "codage" permettant de faire transiter des informations sur Internet. Pour acheminer un fichier complet par exemple, il ne faut pas que son contenu entre en conflit avec les caractères interdits par le protocole HTTP.
La fonction URLEncode du WLangage est prévue pour simplifier les transferts de données utilisant HTTP, et évite toute programmation complexe. Voici un exemple d'envoi d'un fichier depuis une application Android, à destination d'une page AWP d'un site WEBDEV. Il s'agit d'une solution parmis d'autres, mais le principe reste dans tous les cas le même :
Code WINDEV Mobile d'envoi d'un fichier, une photo pour l'exemple, à partir d'un bouton d'une application Android :
sAdressePageWEBDEV est une chaîne = "http://www.serveur:port/PAGE_RécupèreFichierSurServeur.awp"
VidéoParamètre(vipRotationAuto,Vrai)
sPhoto est une chaîne = VidéoLanceAppli(viCaptureImage)
bufFichier est un Buffer = fChargeTexte(sPhoto)
bufFichier = Crypte(bufFichier,"",crypteAucun)
bufFichier = URLEncode(bufFichier)
// Le nom du fichier est également envoyé à la page
sNomFichier est une chaîne = fExtraitChemin(sPhoto,fFichier+fRépertoire)
// Envoi du fichier à la page WEBDEV
HTTPRequête(sAdressePageWEBDEV,"","","IMAGE="+bufFichier+"&NOM="+sNomFichier)
Code de la page WEBDEV qui récupère sur un serveur le fichier. Il s'agit d'une page sans interface, dont la seule action sera de sauvegarder le fichier reçu en restaurant son format de départ. La page se comporte en quelque sorte comme un Webservice, puisque le mode AWP permettra la libération immédiate de ses ressources dès la fin de l'exécution de son code :
bufFichier est un Buffer = PageParamètre("IMAGE")
sNomFichier est une chaîne = PageParamètre("NOM")
bufFichier = Décrypte(bufFichier,"",crypteAucun,encodeBASE64)
fSauveBuffer(fRepDonnées()+["\"]+sNomFichier,bufFichier)
ChaîneAffiche("OK")
FinProgramme()
Cette solution s'applique dans le cas d'un projet Android dont la compilation est faite avec des chaînes de caractères Ansi en exécution :
- menu "Projet/Gestion des configurations/Description de la configuration courante",
- volet "Unicode".
A noter que l'utilisation d'une page WEBDEV en mode AWP est très pratique lorsqu'un action unique doit être demandée à un serveur Web. Dès que différentes actions sont requises, l'utilisation d'un Webservice hébergé par le serveur d'application WEBDEV est à privilégier.
|