Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数据库服务器android检索阵列?_Php_Android_Arrays_Json - Fatal编程技术网

Php 从数据库服务器android检索阵列?

Php 从数据库服务器android检索阵列?,php,android,arrays,json,Php,Android,Arrays,Json,我是android开发新手我的服务器接收一些值进行必要的计算并查询需要发送回设备(应用程序)的值列表php脚本返回表单的数组 ["12345","999989892","9888889898","9876543513","9876543210","9876543211"] 我需要在android中将这个json_编码数组转换成一个简单的数组 try{ HttpClient httpClient = new DefaultHttpClient();

我是android开发新手我的服务器接收一些值进行必要的计算并查询需要发送回设备(应用程序)的值列表php脚本返回表单的数组

["12345","999989892","9888889898","9876543513","9876543210","9876543211"]
我需要在android中将这个json_编码数组转换成一个简单的数组

try{
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/tech/serverConnection.php");
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

            try{
            ResponseHandler<String> responseHandler=new BasicResponseHandler();
            String responseBody = httpClient.execute(httpPost, responseHandler);
            JSONArray test = new JSONArray(responseBody);
            resultArray = test.join(",").split(",");}
            catch (JSONException e) {
                e.printStackTrace();}
            }
    catch(ClientProtocolException e){
        Log.e("ClientProtocol", "Log_tag");
        e.printStackTrace();
    }
    catch(IOException e){
        Log.e("Log_tag", "IOException");
        e.printStackTrace();
    }
试试看{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://10.0.2.2/tech/serverConnection.php");
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
HttpResponse response=httpClient.execute(httpPost);
HttpEntity=response.getEntity();
is=entity.getContent();
试一试{
ResponseHandler ResponseHandler=新BasicResponseHandler();
字符串responseBody=httpClient.execute(httpPost,responseHandler);
JSONArray测试=新的JSONArray(响应库);
resultArray=test.join(“,”).split(“,”;}
捕获(JSONException e){
e、 printStackTrace();}
}
捕获(客户端协议例外e){
Log.e(“ClientProtocol”、“Log_标签”);
e、 printStackTrace();
}
捕获(IOE异常){
Log.e(“Log_标签”、“IOException”);
e、 printStackTrace();
}
当我试图显示任何数字(比如resultArray[1])时,我得到一个空指针异常。我假设问题要么与我的响应有关,要么与解析数组有关。程序在向服务器发送数据时不会出错,只有当我试图从中获取数据时才会出现问题。
谢谢你的帮助

您不应该加入数组或用逗号拆分数组。你应该这样做

JSONArray arr = new JSONArray(responseBody);
List<String> list = new ArrayList<String>();
for(int i = 0; i < arr.length(); i++){
    list.add(arr.getJSONObject(i).toString());
}
JSONArray arr=新的JSONArray(responseBody);
列表=新的ArrayList();
对于(int i=0;i

然后您可以使用list.get(x)来获取字符串

So
resultArray
为空?是这样的,
test
null吗?谢谢@inmystry,在我整理好我的php脚本后,你的答案就行了。但是我有一个错误,当服务器返回一个空数组时,它会给出一个索引越界错误?"12345","999989892",... 或者[“12345”、“9999892”、…(带括号)?我刚刚意识到第一个值被视为[“1234”而不是“1234”。如果我只检测['并删除它?在这种情况下,您的响应应该被解析为JSONArray。很抱歉我误解了您的问题。我的答案之所以有效,是因为它在响应中找到了逗号。您可以尝试
JSONArray test=new JSONArray(responseBy);
并获取元素
String thetwo=test.get(2);
W/SingleClientConnManager(2508):SingleClientConnManager的使用无效:连接仍已分配。W/SingleClientConnManager(2508):确保在分配另一个连接之前释放该连接。W/System.err(2508):org.json.JSONException:Value