我在我的网络服务中使用REST。这是我使用advance rest client
测试我的网络服务时发送的示例有效负载/参数,form content type
(这是RAW类型):
child_id%5B%5D=1&user_id=15&group_id=1&custom=&time=17%3A17%3A00&date=&child_id%5B%5D=2
RAW中的child_id%5B%5D
表示表单中的child_id[]
,因此我发送array
child_id
(form
以上最左侧和最右侧) 。这里的事情很好。
当我尝试将此实现到Android应用程序时出现问题,其中我使用HashMap
POST这些有效负载/参数。 HashMap
cant 在同一个密钥下存储两个值,因此我无法执行以下操作:
map.put("child_id[]", 1);
map.put("child_id[]", 2);
最新的put会覆盖之前的put,因此Android应用只会发送2
作为child_id
的值。
我该怎么办?谢谢你的帮助
答案 0 :(得分:2)
您可以按如下方式向数组添加索引。
map.put("child_id[0]", 1);
map.put("child_id[1]", 2);
答案 1 :(得分:1)
你有几个选择来解决这个问题。最简单的方法是创建一个类作为参数的容器,并将它们存储在ArrayList
public class Parameter {
private String key;
private String value;
// Getters, setters, other stuff.
}
然后将其存储在ArrayList
您还可以使一个类充当各种参数构建器。你可能会这样做:
public class Parameters {
private ArrayList<String> keys = new ArrayList<>();
private ArrayList<String> values = new ArrayList<>();
public void add(String key, String value) { ... }
public ArrayList<String> getKeys() { ... }
public ArrayList<String> getValues() { ... }
}
第二个选项需要更多代码,但增加了一些额外的灵活性,应该可以提供更清晰的API。
或者,正如您在自己的评论中提到的,您可以选择使用Map<String, ArrayList<String>>
。在上面的例子中,这也可以很好地代替ArrayList
。