Retrofit error URL query string must not have replace block

前端 未结 4 537
北恋
北恋 2021-02-05 04:43

I have this function

      @GET(\"/users?filters[0][field]={param}&filters[0][operator]=equals&filters[0][value]={value}\")
UserDto retrieveUsersByFilte         


        
相关标签:
4条回答
  • 2021-02-05 05:30

    Don't put your values directly in the path, but prefer in the method signature. Not completely sure, but try something like this :

    @GET("/users?filters[0][operator]=equals")
    UserDto retrieveUsersByFilters(@Path("filters[0][field]") String nameFilter, @Path("filters[0][value]") String value);
    
    0 讨论(0)
  • 2021-02-05 05:30

    From the JavaDoc:

    Example 1:

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

    Calling with foo.friends(1) yields /friends?page=1. Example with null:


    Example 2:

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

    Calling with foo.friends(null) yields /friends. Array/Varargs Example:


    Example 3:

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

    Calling with foo.friends("coworker", "bowling") yields /friends?group=coworker&group=bowling. Parameter names and values are URL encoded by default. Specify encoded=true to change this behavior.


    Example 4:

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

    Calling with foo.friends("foo+bar")) yields /friends?group=foo+bar.

    0 讨论(0)
  • 2021-02-05 05:41

    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

    0 讨论(0)
  • 2021-02-05 05:49
     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

    0 讨论(0)
提交回复
热议问题