FlorentCode Posté(e) 15 janvier 2011 Share Posté(e) 15 janvier 2011 Bonjour, J'ai une interface graphique où mon user remplit ses informations personnelles dans des popup, quand il valide le popup (appuie sur OK) une requête httpGet est envoyé sur mon serveur et la valeur (en paramètre) est stockée sur la DB distante. Cette solution permet à l'utilisateur de changer ses informations personnelles une par une sans valider le tout à la fin. Pour le parsing des informations dans l'interface graphique: Dois-je faire une requête httpGet avant chaque valeur à parser ou une général au début de mon activité? En gros dois-je faire les requêtes httpGet sur une ou plusieurs URL: Nom: httpGet.setURI(new URI(url/user/nom?"nom"=((TextView) findViewById(R.id.nom)).getText().toString())) Prenom: httpGet.setURI(new URI(url/user/prenom?"prenom"=((TextView) findViewById(R.id.prenom)).getText().toString())) OU url général: httpGet.setURI(new URI(url/user?"nom"=((TextView) findViewById(R.id.nom)).getText().toString())+"&"+"prenom"=((TextView) findViewById(R.id.prenom)).getText().toString())) Le problème: La deuxième solution implique que je suis obligé de faire mes requête sur l'url général, mon serveur m'indique une erreur si je fais une requête httpGet avec qu'un seul paramètre quand je veux updater que mon prénom. Autrement dit j'ai l'impression que je suis obligé de passer en paramètre TOUT les paramètres pour que la requête passe. Des solutions? Merci d'avance, Florent Lien vers le commentaire Partager sur d’autres sites More sharing options...
eephyne Posté(e) 17 janvier 2011 Share Posté(e) 17 janvier 2011 heu je pense qu'une requète POST est plus adapté pour ça http://www.androidsnippets.org/snippets/36/ mais si tu tiens absolument à le faire en GET , n'oublie pas d'encoder tes paramètres avec URLEncode (de mémoire), car les accents et autres caractères n'étant pas dans l'ascii (les 128 premiers caractère) de base sont mal interprété ps:la section n'est pas la bonne Lien vers le commentaire Partager sur d’autres sites More sharing options...
FlorentCode Posté(e) 17 janvier 2011 Auteur Share Posté(e) 17 janvier 2011 heu je pense qu'une requète POST est plus adapté pour ça http://www.androidsnippets.org/snippets/36/ mais si tu tiens absolument à le faire en GET , n'oublie pas d'encoder tes paramètres avec URLEncode (de mémoire), car les accents et autres caractères n'étant pas dans l'ascii (les 128 premiers caractère) de base sont mal interprété ps:la section n'est pas la bonne Merci pour ta réponse. Le problème venait du serveur, j'avais mal configuré ma fonction. Je prefere le faire en GET, il parait que c'est plus performant (??) et mes paramètres ne sont pas confidentiels. En l'occurence, je passe mon login/mot de passe en httpPost. Je t'explique un peu la structure de mon appli: J'ai une page formulaire (nom, prenom, age, nationalité) où l'on peut changer un à un les paramètres (httpGet à chaque update d'un parametre "txt" + TextView.setText(txt) dans mon layout) Le chargement des données est fait dans le onStart() de l'Activité avec un GET qui renvoie le JSON de toutes mes valeurs que je parse dans mon layout. Ce que je veux faire----------------------------URL&PARAMETRES------------- REQUETE Update du surnom---------------------------- /surnom?id=""&surnom="--------------------------GET Update du gender----------------------------/gender?id=""&gender=""--------------------------GET Update de la date de naissance--------- /dob?id=""+dob=""------------------------------------GET Update de la nationalité-------------------- /nationality?id=""&nationality=""-------------------GET Récupérer toutes les infos (JSON) --------- /info?id=""&surnom=""&gender=""&dob=""&nationality=""--------- GET Je débute dans tout ça et c'est vrai que ça me semble logique de faire comme ça, je peux me tromper? Florent Lien vers le commentaire Partager sur d’autres sites More sharing options...
eephyne Posté(e) 17 janvier 2011 Share Posté(e) 17 janvier 2011 c'est le contraire , GET est plus limité que POST , de part son problème d'encodage nécessaire des caractères et de part sa contenance (2083 caractère par url je crois) (par ailleurs , envoyer des donnée en POST n'est pas vraiment plus sécurisé qu'en GET c'est juste plus transparent et plus propre) Lien vers le commentaire Partager sur d’autres sites More sharing options...
FlorentCode Posté(e) 17 janvier 2011 Auteur Share Posté(e) 17 janvier 2011 c'est le contraire , GET est plus limité que POST , de part son problème d'encodage nécessaire des caractères et de part sa contenance (2083 caractère par url je crois) (par ailleurs , envoyer des donnée en POST n'est pas vraiment plus sécurisé qu'en GET c'est juste plus transparent et plus propre) Oui je suis d'accord mais le temps d'une réponse d'une requete GET est plus faible que celle d'une requete POST...les parametres que j'envoie sont des petites chaines de caractère, d'aprés ce que j'ai lu c'est mieux d'envoyer en Get quand les données sont peu complexes. Les images, je les envoie en Post Multipart. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 18 janvier 2011 Share Posté(e) 18 janvier 2011 Intrinsèquement, au niveau du protocole HTTP, il n'y aucune différence de temps de réponse entre une requête GET et une requête POST. Mais, en termes de bonnes pratiques, si on veut suivre la sémantique des requêtes HTTP, une requête GET doit servir à récupérer des données existantes (pas de mise à jour d'une base par ex.), alors qu'une requête POST sert à envoyer des données et effectuer une action coté serveur (mise à jour de la base de données par ex.). Dans ce cas, effectivement, on peut considérer qu'il y peut y avoir un temps de réponse différent entre ces deux types de requêtes. Mais c'est l'implémentation coté serveur qui implique cette différence, et en aucun cas le fait que ce soit à la base un POST ou un GET. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.