Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrofit error URL query string must not have replace block

Tags:

I have this function

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

I try to call it like this :

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

But i have error :

retrofit.RetrofitError: InterfaceUser.retrieveUsersByFilters: URL query string "filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}" must not have replace block.

I already test url on firefox and it work fine.

Thank's for your responses

Edit

Solution:

          @GET("/users?filters[0][operator]=equals")           UserDto retrieveUsersByFilters(           @Query("filters[0][field]") String nameFilter,           @Query("filters[0][value]") String value); 
like image 541
tamtoum1987 Avatar asked Jul 07 '14 12:07

tamtoum1987


2 Answers

Query params have their own annotation which automatically appends to the URL.

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

You can read more about @Query on its Javadoc

like image 55
Jake Wharton Avatar answered Sep 18 '22 06:09

Jake Wharton


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

dont put the pid in the @GET,, Retrofit automatically fix the url, using @Query

like image 20
SATHISH RA Avatar answered Sep 22 '22 06:09

SATHISH RA