HTTP GET avec le corps de la requête RETROFIT
Je suis en utilisant une Rénovation de faire des appels de l'api dans mon application android.
- Je soumettre un @Corps de JSON
@GET("api/")
void getData(@Body UserPostRequestBody request)
Je reçois un message d'erreur
retrofit.RetrofitError: apiCall: Non-body HTTP method cannot contain @Body or @TypedOutput.
Avez-vous une idée?
source d'informationauteur user2026760
Vous devez vous connecter pour publier un commentaire.
Pour envoyer des données avec vos
Get Request
vous pouvez effectuer les opérations suivantes:comme dit dans ce DONC réponseServeur sémantique pour l'OBTENIR, cependant, sont restreints tels qu'un organisme, le cas échéant, n'a pas de sens sémantique de la demande - Roy Fielding.
La définition de l'OBTENIR, comme l'explique ici dans cette réponse explique qu'un corps n'est pas censé dire quoi que ce soit, afin de Rénovation ne vous permet pas d'ajouter un corps. Cela dit, il n'est pas vrai qu'un serveur doit suivre ce format. Il est tout à fait possible pour un serveur d'avoir un point de terminaison qui ne prend pas seulement, mais NÉCESSITE un corps. Il serait "mauvais" de l'architecture, mais il semble un peu ridicule, de Rénovation à la limite de ce que la bibliothèque peut faire inutilement.
De plus, les différentes méthodes HTTP ont des définitions différentes de ce qu'ils sont CENSÉS faire. Par exemple, un OBTENIR est de l'information, un POST crée une nouvelle entrée/objet en fournissant des informations pour le serveur, une mise à jour d'une entrée existante/objet, etc. Le problème, c'est la façon la plus simple de transmettre des données complexes sur le serveur, en particulier lors de l'utilisation de rénovation, de la est par l'utilisation de JSON. Donc le moyen idéal pour OBTENIR des informations à partir du serveur, tout en fournissant un filtre complexe serait d'envoyer un JSON corps avec la requête GET. Malheureusement, il n'existe pas de méthode de requête HTTP qui permet à ce titre de la spec.