android - 为什么改造要重新排序我的 QueryMap 参数?

标签 android retrofit github-api

我正在尝试像这样查询 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 的方式...

    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()。我必须使用 Guava 来保留顺序吗?

最佳答案

这个问题根本与改造无关。您有一个 float 顺序,因为 java.util.HashMap 不保证顺序。您应该使用 LinkedHashMap 来获取固定的元素顺序。

顺便说一句,你最好知道 HashMap 是如何工作的。

关于android - 为什么改造要重新排序我的 QueryMap 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31738746/

相关文章:

java - 如何将可绘制图像放入 gridview 中?

android - HttpUrlConnection getOutputStream 有问题

android - MediaStore.Audio.Playlists.Members.getContentUri 的 String 'volumeName' 参数指的是什么?

java - 打开 Activity 后,我不会用 fragment 替换布局,但我遇到了异常

github - 如何获取从 Github API 获取的数据的结果页数以进行请求?

github - 如何在企业中使用 Github API 进行搜索

java - 保护 Android 应用程序免受网络嗅探

android - 如何在 Retrofit 2.0.0 beta 1 中获取简单的 JSON 对象?

java - 改造和 SimpleXmlConverterFactory

用 github api 重命名文件?