使用@Query改造ws错误

时间:2016-01-22 13:59:25

标签: android retrofit

我试过这个界面:

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

在使用@Query之前,我使用@Path。我改变了 我收到了这个错误:

URL query string "extract-mode=bestdeals&api-key={apikey}" must not have replace block. For dynamic query parameters use @Query.

有什么问题?

1 个答案:

答案 0 :(得分:4)

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

应该是

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

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

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

和你的方法

  @GET("/") public Observable<List<ModelBestDeals>>  
  getBestDeals(@QueryMap Map<String, String> values);

在我看来,更具可读性