Parsing Json url using async

前端 未结 5 836
花落未央
花落未央 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:19

    1. I have solved it.....tRy it really work

    package com.example.json_test;
    
    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.client.ClientProtocolException;
    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.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    public class MainActivity extends Activity
    {
    
            ArrayList items = new ArrayList();
            static InputStream is = null;
            private static String url = "http://redsox.tcs.auckland.ac.nz/734A/CSService.svc/courses";
            JSONArray people = null;
            private static final String TAG_COURSES = "codeField";
            private static final String TAG_SEMESTER="semesterField";
            static JSONObject jObj = null;
            static String json = "";
    
            @Override
            public void onCreate(Bundle savedInstanceState) 
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                new MyTasks().execute();
            }
    
    
            private class MyTasks extends AsyncTask 
            {
    
                @Override
                protected JSONObject doInBackground(URL... urls) 
                {
                    try 
                    {
                        DefaultHttpClient httpClient = new DefaultHttpClient();
                        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 
                  {
                    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);
                    }
                    is.close();
                    json = sb.toString();
                } catch (Exception e) 
                {
                    Log.e("Buffer Error", "Error converting result " + e.toString());
                }
                try 
                {
    
                    JSONArray people = new JSONArray(json);
    
                    for (int i = 0; i < people.length(); i++) 
                    {
                        JSONObject p = people.getJSONObject(i);
                        String Courses = p.getString(TAG_COURSES);
                        String semester=p.getString(TAG_SEMESTER);
    
                        items.add(Courses);
                        items.add(semester);
                    }
    
                } catch (JSONException e) 
                {
                    Log.e("JSON Parser", "Error parsing data " + e.toString());
                } 
                return jObj;
                }
    
                @SuppressWarnings({ "unchecked", "rawtypes" })
                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));
            }
            }
    }
    

提交回复
热议问题