Java 将字符串数组作为POST传递给PHP

Java 将字符串数组作为POST传递给PHP,java,php,json,post,google-cloud-messaging,Java,Php,Json,Post,Google Cloud Messaging,我试图将字符串数组作为POST数据传递给PHP脚本,但不确定该怎么做 以下是我迄今为止执行PHP脚本的代码: 我试图通过阵列的位置: nameValuePairs.add(new BasicNameValuePair("message",message)); String [] devices = {device1,device2,device3}; nameValuePairs.add(new BasicNameValuePair("devices", devices));// <--

我试图将字符串数组作为POST数据传递给PHP脚本,但不确定该怎么做

以下是我迄今为止执行PHP脚本的代码:

我试图通过阵列的位置:

nameValuePairs.add(new BasicNameValuePair("message",message));
String [] devices = {device1,device2,device3};
nameValuePairs.add(new BasicNameValuePair("devices", devices));// <-- Can't pass String[] to BasicNameValuePair
callPHPScript("notify_devices", nameValuePairs);

首先,在PHP中访问
$\u POST
数组时缺少单引号。换线

$registrationIDs = array($_POST[devices]);
致:

您应该使用ini值
display\u errors
log\u errors
error\u reporting
来启用错误日志记录或PHP错误消息的输出以进行调试,以便注意到此类错误


但即使是
array($\u POST['devices'])
也无法达到预期效果<代码>数组(…)是php中的数组初始化构造。这意味着您只需将($\u POST['devices'])包装到另一个数组中


。。。希望看到
var\u dump($\u POST)的输出。这将给我一个进一步帮助的机会。

我认为您应该对设备数组进行json编码,以便获得一个字符串,您可以将其传递给BasicNameValuePair(…)。 在php代码中,您只需使用json_解码来获取数组

JSONArray devices = new JSONArray();
devices.put(device1);
devices.put(device2);
devices.put(device3);

String json = devices.toString();
nameValuePairs.add(new BasicNameValuePair("devices", devices));
在php代码中:

$devices = $_POST['devices'];
$devices = json_decode($devices);

要以查询字符串的形式将数组传递给php,您应该将
[]
添加到标识符中,并将每个项作为单独的条目添加,这样应该可以:

nameValuePairs.add(new BasicNameValuePair("devices[]", device1));
nameValuePairs.add(new BasicNameValuePair("devices[]", device2));
nameValuePairs.add(new BasicNameValuePair("devices[]", device3));

现在,php端的
$\u POST['devices']
将包含一个数组。

这不是问题,第一个也可以工作,但需要注意的是,您可以使用
php.ini
文件(全局)或使用函数
ini\u set($key,$value)
将这些设置设置为适当的值。请注意我对
数组(…)
结构的更新关于
nameValuePairs.add(新的BasicNameValuePair(“devices[]”,device1))
nameValuePairs.add(新的BasicNameValuePairs(“设备[]”,设备2))@戴夫:你应该把它作为一个答案。我现在就试试,谢谢!嘿,我正在尝试这个,但它不起作用,我不知道如何让Java打印PHP错误,所以我只是得到一条“错误执行脚本”消息。我已经用我正在尝试的代码更新了我的帖子。$\u post['devices'],而不是更正确的数组($\u post['devices']);是吗?成功了!这真的很简单。我的客户端java代码:RequestBody formBody=new formBody.Builder().add(“myArray[]”,abc”).add(“myArray[]”,def”).add(“myArray[]”,ghi”).build();我的php服务器代码:$myArray=isset($\u POST['myArray'])$_POST['myArray']:''@Tom celic你解决了这个问题吗?我也有同样的问题。什么是nameValuePairs
JSONArray devices = new JSONArray();
devices.put(device1);
devices.put(device2);
devices.put(device3);

String json = devices.toString();
nameValuePairs.add(new BasicNameValuePair("devices", devices));
$registrationIDs = array($_POST['devices']);
JSONArray devices = new JSONArray();
devices.put(device1);
devices.put(device2);
devices.put(device3);

String json = devices.toString();
nameValuePairs.add(new BasicNameValuePair("devices", devices));
$devices = $_POST['devices'];
$devices = json_decode($devices);
nameValuePairs.add(new BasicNameValuePair("devices[]", device1));
nameValuePairs.add(new BasicNameValuePair("devices[]", device2));
nameValuePairs.add(new BasicNameValuePair("devices[]", device3));