RSS

Exemple d’encodage pour l’envoi d’un fichier depuis une application Android, vers un serveur Web, au travers d’une connexion Internet

25 Juil
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 AWPd’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 :
// Prise d’une photo 
VidéoParamètre(vipRotationAuto,Vrai)
sPhoto est une chaîne = VidéoLanceAppli(viCaptureImage)// Récupération du contenu de l’image 
bufFichier est un Buffer = fChargeTexte(sPhoto)
// Transformation de l’image en « base 64 » 
bufFichier = Crypte(bufFichier,«  »,crypteAucun)
// Encodage afin que tous les caractères soient valides pour le transfert
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 :
// Code d’initialisation de la page
// Récupération de l’image reçue en paramètre 
// le décodage de l’url est automatique 
// Il n’est pas nécessaire d’appeler URLDécode 
bufFichier est un Buffer = PageParamètre(« IMAGE »)
sNomFichier est une chaîne = PageParamètre(« NOM »)
// Du base64 on restaure un buffer avec le contenu initial 
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.
Source: Blod du ST
 
Poster un commentaire

Publié par le 25 juillet 2012 dans Fichier, Windev Mobile

 

Étiquettes : , , ,

Laisser un commentaire