我正在尝试将字符串数组作为 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