I'm trying to query the github api like so...
https://api.github.com/search/repositories?q=created:>=2015-07-11&sort=stars&order=desc&perpage=25&page=1
Here is my GET
@GET("/search")
public void getTrending(@QueryMap Map<String,String> filters,Callback<GitResponse> response);
Here is how I setup my query Map...
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());
}
});
Here is the url that gets formatted by retrofit.
https://api.github.com/search/repositories?order=desc&created>=2015-07-11&perpage=25&sort=stars&page=1
Notice that the order of the params is not retained. I need the created >=
to be the first param for the query to work correctly. I tried using Collections.unmodifiableMap()
but that didn't help. In the retrofit docs, they are using guava's ImmutableMap.of()
. Do I HAVE to use guava for the order to be retained?
The problem is not related to retrofit at all. You have a floating order because java.util.HashMap
doesn't guarantee order. You should use LinkedHashMap
instead to get fixed elements order.
You better to know how hash map works by the way.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With