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);
那个?和 & 会自动为您添加。
我有这个 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);
那个?和 & 会自动为您添加。