为一个参数发布多个值?

Posting multiple values for one argument?

我正在尝试 post 一个数组到 PHP,但是当我使用下面的代码时,没有任何内容被传输并且 $_POST 数组显示为 {}。我怎样才能 post 一个数组到 php?

MultipartRequest request = new MultipartRequest();
request.setUrl(url);
request.setPost(true);  
String[] value = {"a","b","c"};
request.addArgument(argument, value);

谢谢!

如果您不附加文件,请使用 ConnectionRequest 而不是 MultipartRequest:

ConnectionRequest request = new ConnectionRequest();
request.setUrl(url);
request.setPost(true);  

使用 json 库添加数组:

JSONArray array = new JSONArray();
array.put("hi");
array.put("hello");
String value = array.toString();

然后将其作为参数添加到您的请求中:

request.addArgument("argument", value);

@tizbn 提供的答案在某种程度上可能有效,但并不总是适用于 php,所以我使用 StringBuilder 如下所示,但此解决方案需要您知道大小预先排列的数组:

...
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");

String[] value = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
    StringBuilder builder = new StringBuilder();
    value[i] = (builder.append("\"").append(list.get(i)).append("\"")).toString();
}
Arrays.toString(value);

ConnectionRequest request = new ConnectionRequest();
request.setUrl(url);
request.setPost(true);
request.addArgument("arg", value);
...

在 php 端,您读取的值如下:

...
$arg = isset($_POST['arg']) ? $_POST['arg'] : '';
$argArray = json_decode($arg);
foreach ($argArray as $value) {
    ...
    // do whatever you want with $value
}
...