Volley - POST/GET paramètres
J'ai vu Google IO 2013 session sur les de Volley et j'envisage de commutation à la volée. N'Volley en charge l'ajout de POST/GET paramètres de la demande? Si oui, comment puis-je le faire?
- Je n'ai pas vu l'ensemble de la keynote, mais je suis assez sûr de l'OBTENIR devrait être faisable simplement en ajoutant des paramètres à l'URL (par exemple.
http://example.com?param1=val1¶m2=val2
) - Il semble y avoir aucune documentation n'est pas encore, mais vous pouvez vérifier la source ici android.googlesource.com/platform/frameworks/volley/+/master
- Droit, mais qu'paramètres POST? J'ai vu le code source, mais ne trouvez pas tout ce qui est lié à des paramètres POST.
- J'ai honte de le dire. Mais, Si vous obtenez ici de se demander pourquoi votre demande n'a pas un corps sur votre serveur, assurez-vous que vous êtes à l'aide de POST/PUT méthode. Suppose que je suis juste fatigué. Espérons que ce commentaire aide de personne ou d'aide à me sentir mieux
Vous devez vous connecter pour publier un commentaire.
Dans votre Demande de classe (qui s'étend à la Demande), remplacer la getParams() la méthode. Vous devez faire de même pour les en-têtes, de substituer getHeaders().
Si vous regardez PostWithBody classe TestRequest.java en Volley tests, vous trouverez un exemple.
Il va quelque chose comme ceci
Evan Charlton a eu la gentillesse de faire un rapide exemple de projet pour nous montrer comment utiliser volley.
https://github.com/evancharlton/folly/
getParams
n'est appelée (par défaut) dans une requête POST ou PUT, mais pas dans une requête GET. Voir Ogre_BGR réponsePour les paramètres GET il y a deux alternatives:
Première: Comme suggéré dans un commentaire en dessous de la question, vous pouvez simplement utiliser des chaînes de caractères et de remplacer les paramètres des espaces réservés avec leurs valeurs comme:
où num1 et num2 sont variables de Chaîne de caractères qui contiennent vos valeurs.
Deuxième: Si vous utilisez nouveaux externe HttpClient (4.2.x par exemple), vous pouvez utiliser URIBuilder pour construire votre Uri. L'avantage est que si votre chaîne uri a déjà des paramètres, il sera plus facile de passer à la
URIBuilder
et ensuite utiliserub.setQuery(URLEncodedUtils.format(getGetParams(), "UTF-8"));
pour ajouter vos paramètres supplémentaires. De cette façon, vous ne serez pas pris la peine de vérifier si le "?" est déjà ajouté à l'uri ou de manquer des & éliminant ainsi une source potentielle d'erreurs.Pour les paramètres POST parfois probablement sera plus facile que l'on a accepté la réponse à faire comme:
par exemple, de substituer la
getParams()
méthode.Vous pouvez trouver un exemple de travail (ainsi que beaucoup d'autres de base de Volley exemples) dans le Andorid Volley Exemples de projet.
Method.GET
etMethod.POST
?, Je suis en utilisant seulementMethod.GET
même pour l'envoi de parms pour le serveur, Est-il mauvais?CustomRequest est un moyen de résoudre le Volley est JSONObjectRequest ne peut pas afficher les paramètres tels que la
StringRequest
ici est la classe helper qui permettent d'ajouter de l'params:
grâce à Greenchiu
getParams()
fonction primordiale n'est pas de travail.Cette classe d'assistance gère les paramètres pour OBTENIR et POST demandes:
GetUrl
plusieurs fois. Nous nous sommes retrouvés avec un classique foreach approche posté dans une autre réponse. Espérons que cette aide qui atterrit ici. 🙂Traiter avec OBTENIR paramètres dont j'ai indiqué à de Andrea Devise " solution.
Le problème est que le Volley appelé
GetUrl
plusieurs fois et sa solution, à l'aide d'un Itérateur, détruit de la Carte originale de l'objet. Le subséquente de Volley-appels internes avait un vide params objet.J'ai aussi ajouté de l'encodage des paramètres.
C'est une ligne d'utilisation (pas de sous-classe).
Cette fonction utilise des en-têtes de passer un APIKEY et définit une BALISE à la demande utile pour l'annuler avant son achèvement.
Espère que cette aide.
Cela peut vous aider...
Pour Les Futurs Lecteurs
J'aime travailler avec les Volley. Pour gagner du temps de développement, j'ai essayé d'écrire de petits portée de main de la bibliothèque Gloxey Netwok Manager pour l'installation de Volley avec mon projet. Il comprend JSON et l'analyseur de différentes autres méthodes qui permet de vérifier la disponibilité du réseau.
Utilisation
ConnectionManager.class
dans lequel les différentes méthodes pour Volley Chaîne et Volley JSON demande sont disponibles.Vous pouvez faire des demandes de GET, PUT, POST, DELETE avec ou sans en-tête. Vous pouvez lire l'intégralité de la documentation ici.
Viens de mettre cette ligne dans votre gradle fichier.
Volley StringRequest
Méthode GET (sans en-tête)
Comment l'utiliser?
Exemple
Volley StringRequest
Méthode POST/PUT/DELETE (sans en-tête)
Exemple
Bonus
Gloxey Parser JSON
N'hésitez pas à utiliser gloxey parser json pour analyser votre api de réponse.
Exemple
De fournir
POST
paramètre envoyer votre paramètre commeJSONObject
dans leJsonObjectRequest
constructeur. 3ème paramètre accepte lesJSONObject
qui est utilisé dans le corps de la Requête.