将ArrayList转换为DavidWebb Android

5

我正在使用DavidWebb进行Http POST请求。我有一个ArrayList或HashMap包含我想要发送的所有参数。如何使用DavidWebb传递参数数组?

目前我是这样做的:

Response<String> resp = webb
                    .post(Constants.URL + Constants.CUSTOMER_SIGNUP)
                    .param("username", params.get("username"))
                    .param("user_contact_no", params.get("user_contact_no"))

我希望您能帮我实现类似的功能。
Response<String> resp = webb
                        .post(Constants.URL + Constants.CUSTOMER_SIGNUP)
                        .arraylist/hasmap of params

你如何从 ArrayList 中获取键/值对? - Andy Turner
我想使用一个方法来发送整个应用程序的请求。无论我发送哪些参数,我都会传递所有参数的HashMap。因此,我只想按原样发送hashmap。 - Shaheera
3个回答

3
我找到了解决方案。“Andy Turner”的答案让我茅塞顿开。
Request request = webb
                    .post(Constants.URL + Constants.CUSTOMER_SIGNUP);
                    for (Map.Entry<String, String> entry : params.entrySet()) {
                        request.param(entry.getKey(), entry.getValue());
                    }
            Response<String> resp = request.readTimeout(30000)
                    .connectTimeout(30000)
                    .asString();

我已添加了一个问题来解决这个需求:https://github.com/hgoebl/DavidWebb/issues/13 - hgoebl

2

如果您不熟悉特定的库,可以直接迭代params的条目集合(entry set),如果它是一个HashMap

Response<String> resp = webb
                .post(Constants.URL + Constants.CUSTOMER_SIGNUP);
for (Map.Entry<String, String> entry : params.entrySet()) {
  resp = resp.param(entry.getKey(), entry.getValue());
}

你的答案需要修改,但还是谢谢你的回答。它帮助我找到了解决方案。 - Shaheera

2

从1.2.0版本(发布于2015年11月12日)开始,您可以这样做:

Map<String, Object> params = new HashMap<String, Object>();
params.put("string", "a string can contain &");
params.put("number", 4711);
params.put("null", null);
params.put("empty", "");

Response<String> response = webb
        .post("/my-url")
        .params(params)
        .asString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接