我在网上看到的有关改装2的所有示例都包含一个界面,其中有不同的网址可以进行调用。
我以。的形式做了同样的事。
@GET("NewsFeed/latest")
Observable<ArrayList<News>> getNews(@Query("category") int category,
@Query("language") int language,
@Query("location") int location,
@Query("poster") int poster,
@Query("limit") int limit,
@Query("offset") long offset);
该调用中的所有参数都是可选的,因此即使没有指定任何参数也可以进行调用。除了重载方法之外,还有什么方法可以做到这一点? 我应该使用@nullable注释吗?
答案 0 :(得分:1)
您可以使用@QueryMap
。这允许我们在Map
中指定查询,并且可以在不修改现有代码的情况下轻松添加新查询参数。
@GET("NewsFeed/latest")
Observable<ArrayList<News>>getNews(
@QueryMap Map<String, String> options);
用途:
private void fetchNews() {
Map<String, String> data = new HashMap<>();
data.put("category", "Sports");
data.put("language", String.valueOf(2));
// simplified call
newsService.getNews(data);
}
答案 1 :(得分:0)
如您所见here,查询参数是可选的。通过将null传递给方法,retrofit将忽略查询参数。
(也许你不应该使用原始类)