我正在尝试将字符串数组作为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中的[]可能会错误地编写一些编码吗?我需要传递一个数组,我该怎么做?
答案 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