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


Pass string array to PHP script as POST

我正在尝试将字符串数组作为 Android 应用程序中的 POST 数据传递给 PHP 脚本,但我遇到了问题。

这是我的客户端代码:

ArrayList<NameValuePair> querySend = new ArrayList<NameValuePair>();
for (Stop s : stops) {
                querySend.add(new BasicNameValuePair("stop_data[]", s.getNumber()));
            }
HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://www.myURL/myPHPScript.php");
                httppost.setEntity(new UrlEncodedFormEntity(querySend));
                HttpResponse response = httpclient.execute(httppost);

这是我的PHP脚本代码:

foreach($_GET['stop_data'] as $stop) {
  // do something
}

如果我运行我的java代码,我将从php脚本收到此响应错误:

Warning: Invalid argument supplied for foreach() in /web/htdocs/www.myURL/myPHPScript.php on line 6
null

否则,如果我以这种方式将请求放在我的浏览器上:

http://www.myURL/myPHPScript.php?stop_data[]=768&stop_data[]=1283

我会给出正确的答案!

如果我尝试相同的代码,但是如果我 POST 不是一个数组,而是单个字符串传递和接收stop_data变量而没有 [],它可以工作!我不明白错误在哪里!!BasicNameValuePair String name 中的 [] 可能是在做一些错误的编码?我需要传递一个数组,我该怎么做?

你使用POST方法,在php代码中你应该使用$_POST

试试这个

foreach($_POST['stop_data'] as $stop) {
  // do something
}

这种方式是使用 GET 方法

http://www.myURL/myPHPScript.php?stop_data[]=768&stop_data[]=1283