调用JSONObject时应用程序崩溃

时间:2016-01-01 07:15:53

标签: android mysql json listview

我想从MySQL检索数据到android listView。我已遵循此tutorial中的每个步骤,但是当我尝试调用JSON对象时它崩溃了。请帮忙。非常感谢..

 private ListView listView;
  String myJSON;
  JSONArray information = null;
  ArrayList<HashMap<String, String>> infoList;

         @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        infoList = new ArrayList<HashMap<String, String>>();
        listView = (ListView) findViewById(R.id.listView2);
        getData();
  }
      public void getData() {
                class GetDataJSON extends AsyncTask<String, Void, String> {

                    @Override
                    protected String doInBackground(String... params) {
                        DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
                        HttpPost httppost = new HttpPost("http://192.168.107.115:80/Android/CRUD/retrieveInformation.php");

                        // Depends on your web service
                        httppost.setHeader("Content-type", "application/json");

                        InputStream inputStream = null;
                        String result = null;
                        try {
                            HttpResponse response = httpclient.execute(httppost);
                            HttpEntity entity = response.getEntity();

                            inputStream = entity.getContent();
                            // json is UTF-8 by default
                            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
                            StringBuilder sb = new StringBuilder();

                            String line = null;
                            while ((line = reader.readLine()) != null)
                            {
                                sb.append(line + "\n");
                            }
                            result = sb.toString();
                        } catch (Exception e) {
                            // Oops
                        }
                        finally {
                            try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
                        }
                        return result;
                    }

                    @Override
                    protected void onPostExecute(String result){
                        myJSON=result;
                        showList();
                    }
                }
                GetDataJSON g = new GetDataJSON();
                g.execute();
            }

            protected void showList(){
                try {
                    JSONObject jsonObj = new JSONObject(myJSON);
                    information = jsonObj.getJSONArray(Config.TAG_RESULTS);

                    for(int i=0;i<information.length();i++){
                        JSONObject c = information.getJSONObject(i);
                        String date = c.getString(Config.TAG_DATE);
                        Toast.makeText(getApplicationContext(),date,Toast.LENGTH_LONG).show();
                        String timeIn = c.getString(Config.TAG_TiME_IN);
                        Toast.makeText(getApplicationContext(),timeIn,Toast.LENGTH_LONG).show();
                        String timeOut = c.getString(Config.TAG_TIME_OUT);

                        HashMap<String,String> info = new HashMap<String,String>();
                        info.put(Config.TAG_DATE, date);
                        info.put(Config.TAG_TiME_IN, timeIn);
                        info.put(Config.TAG_TIME_OUT,timeOut);

                        infoList.add(info);
                    }

                    ListAdapter adapter = new SimpleAdapter(
                            HomePage.this, infoList, R.layout.retrieve_data,
                            new String[]{Config.TAG_DATE,Config.TAG_TiME_IN,Config.TAG_TIME_OUT},
                            new int[]{R.id.date,R.id.timeIn,R.id.timeOut}
                    );

                    listView.setAdapter(adapter);

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

retrieveInformation.php

<?php
  define('HOST','127.0.0.1:3307');
  define('USER','root');
  define('PASS','');
  define('DB','androiddb');

  $con = mysqli_connect(HOST,USER,PASS,DB) or die('unable to connect');

  $sql = "select * from information";

  $res = mysqli_query($con,$sql);

  $result=array();

  while($row=mysqli_fetch_array($res)){
      array_push($result,array('id'=>$row[0],'name'=>$row[1],'weather'=>$row[2],'date'=>$row[3],'status'=>$row[4],
      'time_in'=>$row[5], 'time_out'=>$row[6]));
  }

 print(json_encode(array("result"=>$result)));

mysqli_close($con);

?>

logcat的

  Process: com.example.project.myapplication, PID: 31622
    java.lang.NullPointerException
            at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
            at org.json.JSONTokener.nextValue(JSONTokener.java:94)
            at org.json.JSONObject.<init>(JSONObject.java:155)
            at org.json.JSONObject.<init>(JSONObject.java:172)
            at com.example.project.myapplication.GUI.HomePage.showList(HomePage.java:185)
            at com.example.project.myapplication.GUI.HomePage$1GetDataJSON.onPostExecute(HomePage.java:176)
            at com.example.project.myapplication.GUI.HomePage$1GetDataJSON.onPostExecute(HomePage.java:137)
            at android.os.AsyncTask.finish(AsyncTask.java:632)

代码

`JSONObject jsonObj = new JSONObject(myJSON);` , 

class GetDataJSON extends AsyncTask<String, Void, String> {  和showList();

1 个答案:

答案 0 :(得分:0)

再犯一个愚蠢的错误。忘记打开wifi连接