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

时间:2013-11-17 14:38:04

标签: php android json http-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中的[]可能会错误地编写一些编码吗?我需要传递一个数组,我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

试试这个

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

这种方式是使用GET方法

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