改造2中url中运营商的问题

时间:2018-03-15 00:23:48

标签: android rest url retrofit2

我正在尝试学习如何使用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参数(或实际上以任何其他方式)生成正确的网址?

2 个答案:

答案 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);