使用@Query 改造 ws 错误

Cor*_*liu 0 android retrofit

我试过这个界面:

public interface InterfaceWs
{
  @GET("/?extract-mode=bestdeals&api-key={apikey}") public Observable<List<ModelBestDeals>> getBestDeals(@Query("apikey") String apikey);
}
Run Code Online (Sandbox Code Playgroud)

在使用之前,@Query我正在使用@Path. 我更改它并收到此错误:

URL query string "extract-mode=bestdeals&api-key={apikey}" must not have replace block. For dynamic query parameters use @Query.
Run Code Online (Sandbox Code Playgroud)

怎么了 ?

Bla*_*elt 5

 @GET("/?extract-mode=bestdeals&api-key={apikey}") public Observable<List<ModelBestDeals>> getBestDeals(@Query("apikey") String apikey);
Run Code Online (Sandbox Code Playgroud)

应该

@GET("/?extract-mode=bestdeals") public Observable<List<ModelBestDeals>> getBestDeals(@Query("api-key") String apikey);
Run Code Online (Sandbox Code Playgroud)

改造将负责完成您的网址 api-key=value,其中 value 是apikey. 您还可以使用 QueryMap 来提供另一对extract-mode=bestdeals。例如

 Map<String, String> map = new HashMap<>();
 map.put("extract-mode", "bestdeals");
 map.put("api-key", apikey);
Run Code Online (Sandbox Code Playgroud)

和你的方法

  @GET("/") public Observable<List<ModelBestDeals>>  
  getBestDeals(@QueryMap Map<String, String> values);
Run Code Online (Sandbox Code Playgroud)

在我看来,这是更具可读性的方式