Parsing Json url using async

前端 未结 5 907
花落未央
花落未央 2021-01-25 23:53

I get exceptions when running this code. I want to parse the url which is an array of json objects:

package com.example.compsci_734t;

import java.io.BufferedRea         


        
5条回答
  •  难免孤独
    2021-01-26 00:27

    I have solved it. Thanks for all your help. I also converted the parsed stuff into a list view. This is my working code:

    package com.example.compsci_734t;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.zip.GZIPInputStream;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.StatusLine;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    
    
    
    
    import android.app.Activity;
    import android.app.ListActivity;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    
    
    public class People extends Activity{
    
            ArrayList items = new ArrayList();
            static InputStream is = null;
            //private static String url = "";
            //private static String url = "http:...";
            private static String url = "http....";
            //URL requestUrl = new URL(url);
            JSONArray people = null;
            private static final String TAG_COURSES = "Courses";
            static JSONObject jObj = null;
            static String json = "";
    
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.people);
                new MyTasks().execute();
            }
    
    
            private class MyTasks extends AsyncTask {
    
                @Override
                protected JSONObject doInBackground(URL... urls) {
                   // return loadJSON(url);
                    try {
                        // defaultHttpClient
                        DefaultHttpClient httpClient = new DefaultHttpClient();
                        //HttpPost httpPost = new HttpPost(url);
                        HttpGet httpGet = new HttpGet(url);
                        HttpResponse httpResponse = httpClient.execute(httpGet);
    
                        HttpEntity httpEntity = httpResponse.getEntity();
                        is = httpEntity.getContent();
    
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    } catch (ClientProtocolException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                  try {
                    /*BufferedReader reader = new BufferedReader(new InputStreamReader(
                            is, "UTF-8"), 8);*/
                    InputStream inputStream = is;
                    GZIPInputStream input = new GZIPInputStream(inputStream);
                    InputStreamReader reader = new InputStreamReader(input);
                    BufferedReader in = new BufferedReader(reader);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = in.readLine()) != null) {
                        sb.append(line);
                       //System.out.println(line);
                    }
                    is.close();
                    json = sb.toString();
                } catch (Exception e) {
                    Log.e("Buffer Error", "Error converting result " + e.toString());
                }
    
                // try parse the string to a JSON object
    
                try {
    
                    JSONArray people = new JSONArray(json);
                    //JSONArray people = new JSONArray(json);
    
                    for (int i = 0; i < people.length(); i++) {
                        //System.out.println(courses.getJSONObject(i).toString());
                        JSONObject p = people.getJSONObject(i);
    
                        // Storing each json item in variable
                        String person_id = p.getString("someString1");
    
    
                        items.add(person_id);
    
                        /*Log.v("--", "People: \n" + "\n UPI: " + person_id);*/
                    }
    
    
                    //jObj = new JSONObject(json);
                } catch (JSONException e) {
                    Log.e("JSON Parser", "Error parsing data " + e.toString());
                } 
    
                // return JSON String
                return jObj;
                }
    
                protected void onPostExecute(JSONObject json) {
                    ListView myListView = (ListView)findViewById(R.id.peopleList);
                    myListView.setAdapter(new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, items));
            }
            }
    

提交回复
热议问题