web-dev-qa-db-fra.com

La chaîne de requête d'URL d'erreur de modification ne doit pas avoir de bloc de remplacement

J'ai cette fonction

      @GET("/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}")
UserDto retrieveUsersByFilters(@Path("param") String nameFilter, @Path("value") String value);

J'essaie de l'appeler comme ceci:

   UserDto currentUser = interfaceUser.retrieveUsersByFilters(User.LOGIN, login);

Mais j'ai une erreur:

retrofit.RetrofitError: InterfaceUser.retrieveUsersByFilters: chaîne de requête d'URL "filters [0] [field] = {param} & filters [0] [operator] = equals & filters [0] [value] = {value}" ne doit pas avoir de bloc de remplacement.

J'ai déjà testé l'URL sur Firefox et cela fonctionne bien.

Merci pour vos réponses

Éditer

Solution:

          @GET("/users?filters[0][operator]=equals")
          UserDto retrieveUsersByFilters(
          @Query("filters[0][field]") String nameFilter,
          @Query("filters[0][value]") String value);
23
tamtoum1987

Les paramètres de requête ont leur propre annotation qui s'ajoute automatiquement à l'URL.

@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(
    @Query("filters[0][field]") String nameFilter,
    @Query("filters[0][value]") String value);

Vous pouvez en savoir plus sur @Query le son Javadoc

23
Jake Wharton
 URL="/api-mobile_prateek2.php?method=getProductById&pid="


 @GET("/api-mobile_prateek2.php?method=getProductById")
    Call<Product> responseproduct(@Query("pid") String pid);

ne mettez pas pid dans @GET , Retrofit corrige automatiquement l'url, en utilisant @Query

5
SATHISH RA

Ne mettez pas vos valeurs directement dans le chemin, mais préférez dans la signature de la méthode. Pas complètement sûr, mais essayez quelque chose comme ceci:

@GET("/users?filters[0][operator]=equals")
UserDto retrieveUsersByFilters(@Path("filters[0][field]") String nameFilter, @Path("filters[0][value]") String value);
0
Tr4X

Depuis JavaDoc :

Exemple 1:

@GET("/friends")
 Call<ResponseBody> friends(@Query("page") int page);

Appeler avec foo.friends (1) donne/friends? Page = 1. Exemple avec null:


Exemple 2:

@GET("/friends")
 Call<ResponseBody> friends(@Query("group") String group);

Appeler avec foo.friends (null) donne/friends. Exemple de tableau/Varargs:


Exemple 3:

@GET("/friends")
 Call<ResponseBody> friends(@Query("group") String... groups);

Appeler avec foo.friends ("collègue", "bowling") donne/friends? Group = collègue & group = bowling. Les noms et les valeurs des paramètres sont codés par défaut par URL. Spécifiez encoded = true pour modifier ce comportement.


Exemple 4:

@GET("/friends")
 Call<ResponseBody> friends(@Query(value="group", encoded=true) String group);

Appeler avec foo.friends ("foo + bar")) donne/friends? Group = foo + bar.

0
Barakuda