Android: Retrofit HTTP get方法中的路径参数

Android: Path parameters in HTTP get method by retrofit

我有这个 api link:

http://www.xxxx.com/?apikey=mykey&i=tt036543

现在通过改造,我试图用 GET 方法调用这个 api,这样我就可以创建这个接口:

@GET("/?apikey=mykey&i={movie_id}")
Call<MovieDetailEntity> getSearchedMovie(@Path("movie_id") String id);

但是我得到了这个错误:

java.lang.IllegalArgumentException: URL query string "apikey=mykey&i={movie_id}" must not have replace block. For dynamic query parameters use @Query.
    for method BatmanService.getSearchedMovie

如果我使用这个查询:

@GET("/?apikey=mykey&i=")
Call<MovieDetailEntity> getSearchedMovie(@Query("movie_id") String id);

然后 link 更改为:

http://www.xxxx.com/?apikey=mykey&i=&movie_id=tt036543

如何称呼这个api?

如果我没记错的话,一旦你使用了@query,你就不应该在url处设置变量。它将使用@query 注解中的字符串作为变量名。

这应该有效:

@GET("/?apikey=mykey")
Call<MovieDetailEntity> getSearchedMovie(@Query("i") String id);

还有这个,如果你也想传递你的 api 密钥:

@GET("/")
Call<MovieDetailEntity> getSearchedMovie(@Query("apikey") String mykey,
                                         @Query("i") String id);

那个?和 & 会自动为您添加。