Aller au contenu

[Requête Http] Une seule Url ou plusieurs pour un Parsing dans le layout ?


Recommended Posts

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

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

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

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...