我正在尝试学习如何使用Retrofit2,这是我必须生成的网址:
(baseUrl)/repositories?q=language:Python&sort=stars&page=1
这是我正在使用的方法:
Call<List<Repo>> javaRepos(
@Query("language") String language,
@Query("sort") String sort,
@Query("page") int page
);
这就是我所说的:
Call<List<Repo>> call = client.javaRepos("Python", "stars", 1);
但是,这是我的代码生成的网址:
(baseUrl)/repositories?language=Python&sort=stars&page=1
区别在于:
q=
缺失; language
之后是=
,而不是:
如何使用@Query
参数(或实际上以任何其他方式)生成正确的网址?
答案 0 :(得分:1)
看起来你误解了所需网址的查询字符串。
q=language:Python&sort=stars&page=1
应分为三个键值对:
q
- language:Python
sort
- stars
page
- 1
请注意,第一个键是q
而不是language
。
考虑到这一点,您的方法应如下所示(并且您必须传递"language:Python"
而不仅仅是"Python"
作为第一个参数。)
Call<List<Repo>> javaRepos(
@Query("q") String language,
@Query("sort") String sort,
@Query("page") int page
);
答案 1 :(得分:-1)
您需要根据此链接使用路径注释:https://square.github.io/retrofit/2.x/retrofit/index.html?retrofit2/http/Path.html
@GET("repositories?q=language:{lang}&sort={sort}&page={page}")
Call<List<Repo>> javaRepos(@Path(value = "lang") String lang, @Path(value = "sort") String sort, @Path(value = "page") int page);