为什么改造要重新排序我的 QueryMap 参数?
Why is retrofit reordering my QueryMap params?
我正在尝试像这样查询 github api...
https://api.github.com/search/repositories?q=created:>=2015-07-11&sort=stars&order=desc&perpage=25&page=1
这是我的 GET
@GET("/search")
public void getTrending(@QueryMap Map<String,String> filters,Callback<GitResponse> response);
这是我设置查询地图的方式...
Map<String,String> searchFilters = new HashMap<>();
searchFilters.put("created>","2015-07-11");
searchFilters.put("sort","stars");
searchFilters.put("order","desc");
searchFilters.put("perpage","25");
searchFilters.put("page", "1");
api.getTrending(Collections.unmodifiableMap(searchFilters), new Callback<GitResponse>() {
@Override
public void success(GitResponse gitResponse, Response response) {
Log.e("tag",response.toString());
}
@Override
public void failure(RetrofitError error) {
Log.e("tag",error.toString());
}
});
这是通过改造格式化的 url。
https://api.github.com/search/repositories?order=desc&created>=2015-07-11&perpage=25&sort=stars&page=1
注意参数的顺序没有保留。我需要 created >=
成为查询正常工作的第一个参数。我尝试使用 Collections.unmodifiableMap()
但这没有帮助。在retrofit docs中,他们使用的是guava的ImmutableMap.of()
。我必须使用番石榴来保留订单吗?
该问题与改造完全无关。您有一个浮动订单,因为 java.util.HashMap
不能保证订单。您应该使用 LinkedHashMap
来获取固定元素顺序。
你最好顺便知道哈希映射是如何工作的。
也许我来晚了一点,但无论如何...:)
命名参数的要点是顺序无关紧要。如果重要,服务器有故障。
您的主要问题似乎是参数的名称不是“创建的”。是“q”。 “创造”是价值的一部分。
我正在尝试像这样查询 github api...
https://api.github.com/search/repositories?q=created:>=2015-07-11&sort=stars&order=desc&perpage=25&page=1
这是我的 GET
@GET("/search")
public void getTrending(@QueryMap Map<String,String> filters,Callback<GitResponse> response);
这是我设置查询地图的方式...
Map<String,String> searchFilters = new HashMap<>();
searchFilters.put("created>","2015-07-11");
searchFilters.put("sort","stars");
searchFilters.put("order","desc");
searchFilters.put("perpage","25");
searchFilters.put("page", "1");
api.getTrending(Collections.unmodifiableMap(searchFilters), new Callback<GitResponse>() {
@Override
public void success(GitResponse gitResponse, Response response) {
Log.e("tag",response.toString());
}
@Override
public void failure(RetrofitError error) {
Log.e("tag",error.toString());
}
});
这是通过改造格式化的 url。
https://api.github.com/search/repositories?order=desc&created>=2015-07-11&perpage=25&sort=stars&page=1
注意参数的顺序没有保留。我需要 created >=
成为查询正常工作的第一个参数。我尝试使用 Collections.unmodifiableMap()
但这没有帮助。在retrofit docs中,他们使用的是guava的ImmutableMap.of()
。我必须使用番石榴来保留订单吗?
该问题与改造完全无关。您有一个浮动订单,因为 java.util.HashMap
不能保证订单。您应该使用 LinkedHashMap
来获取固定元素顺序。
你最好顺便知道哈希映射是如何工作的。
也许我来晚了一点,但无论如何...:)
命名参数的要点是顺序无关紧要。如果重要,服务器有故障。 您的主要问题似乎是参数的名称不是“创建的”。是“q”。 “创造”是价值的一部分。