【问题标题】:Which is most effective way to add parameters to JSON Volley request?向 JSON Volley 请求添加参数的最有效方法是什么?
【发布时间】:2018-03-12 10:45:55
【问题描述】:

我有一组简单的应用程序,其中包含来自 api 的啤酒数据。 我想编写通过警报对话框设置四个参数的方法,看起来我的方法有点原始和复杂,它看起来像:

private String createFilteredUrl() {
    String queryEndpoint = "?";
    StringBuilder sb = new StringBuilder();
    if(alcFromV != 0){
        sb.append("abv_gt=" + alcFromV);
    }
    if(alcToV != 0){
        sb.append("abv_lt=" + alcToV);
    }
    if(ibuFromV != 0){
        sb.append("ibu_gt=" + ibuFromV);
    }
    if(ibuToV != 0){
        sb.append("ibu_lt=" + ibuToV);
    }
  return queryEndpoint;

}

这只是部分完成,因为我认为这是一种效率低下的方式,并且必须开发一些更简单的解决方案。这里我实际上应该重写if语句条件,因为如果用户跳过一个字段而不是我必须忽略一个参数,等等,会有很多if语句,整个代码看起来不是很干净

那么,这就是我应该使用参数执行请求的方式吗?

【问题讨论】:

    标签: android rest android-volley


    【解决方案1】:

    如果您使用 Volley,那么为什么不使用它的 getParams() 覆盖方法

            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                headerParams.put("key1", "val1");
                headerParams.put("key2", "val2");
                ..............
                return params;
            }
    

    【讨论】:

    • 我读过这个方法ic只有在发出POST类型请求时才调用,而不是GET,这不是真的吗?
    • 您可以尝试一下,因为少数请求 getParams() 有效,少数方法无效。
    【解决方案2】:

    将您的 alcFromValcToVibuFromV 等放在一个数组中,用 for 或 for-each 语句替换 if 语句并遍历数组的内容。

    仍然原始但不那么原始! ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2018-05-13
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多