Android json中的HTTP Get Request

时间:2015-12-05 06:13:50

标签: java android json http get

  1. 嗨,我不明白为什么这不起作用,我试图检索指定网址中“offer”之后的内容,然后显示它但是当我点击Android屏幕上的“优惠”按钮时什么都没发生。如果可以,请帮忙。我在清单中有互联网许可。

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    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.JSONObject;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ListView;
    
  2. 公共类LoggedIn扩展了Activity {

    AlertDialog alertDialogStores;
    ObjectItem[] ObjectItemData = new ObjectItem[5];    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.logged_in);
    
    
        // a button to show the pop up with a list view
        View.OnClickListener handler = new View.OnClickListener(){
            public void onClick(View v) {
                switch (v.getId()) {                    
    
                    case R.id.buttonShowPopUp:
                    LoaderTask task = new LoaderTask();
                     task.execute();
                        break;
                }
            }
        };
    
        findViewById(R.id.buttonShowPopUp).setOnClickListener(handler);
    
    }
    
    
    class LoaderTask extends AsyncTask<Void , Void ,String>{
        ProgressDialog progressDialog ;
        public LoaderTask(){
            progressDialog = new ProgressDialog(SplashActivity.this);
            progressDialog.setIndeterminate(false);
            progressDialog.setCancelable(false);
            progressDialog.setMessage("Loading app data...");
        }
    
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
    
            progressDialog.show();
        }
    
        @Override
        protected String doInBackground(Void... params) {
    
            return  connect("http://ec2-54-175-18-179.compute-1.amazonaws.com/customers/37.json");
        }
    
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            progressDialog.dismiss();
            showPopUp(result);
        }
    }
    
    private String convertStreamToString(InputStream is) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
    
        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }
    
    public String connect(String url)
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(url);
        HttpResponse response;
        try {
            response = httpclient.execute(httpget);
            //Log.i(TAG,response.getStatusLine().toString());
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                InputStream instream = entity.getContent();
                String result= convertStreamToString(instream);
                instream.close();
                return result;
            }
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
        }
        return null;
    }
    
    public void showPopUp(String result){
        try{
            JSONArray jsonArray = new JSONArray(result);
            for(int i = 0 ; i <= 5 ; i++){
                JSONObject o = jsonArray.getJSONObject(i);
                String http_response = o.getString("offer");
                System.out.println("test   "+http_response);
                //ObjectItemData[i] = new ObjectItem(o);
    
                ObjectItemData[0] = new ObjectItem(http_response);
                ObjectItemData[1] = new ObjectItem(http_response);
                ObjectItemData[2] = new ObjectItem(http_response);
                ObjectItemData[3] = new ObjectItem(http_response);
                ObjectItemData[4] = new ObjectItem(http_response);
    
                // adapter instance
                ArrayAdapterItem adapter = new ArrayAdapterItem(this, R.layout.list_view_row_item, ObjectItemData);
    
                // create a new ListView, set the adapter and item click listener
                ListView listViewItems = new ListView(this);
                listViewItems.setAdapter(adapter);
                listViewItems.setOnItemClickListener(new OnItemClickListenerListViewItem());
    
                // put the ListView in the pop up
                alertDialogStores = new AlertDialog.Builder(LoggedIn.this)
                    .setView(listViewItems)
                    .setTitle("Offers")
                    .show();
    
            }
        } catch(Exception e){e.printStackTrace();}
        finally{System.out.println("Success");
    
        }
    }
    

    }

1 个答案:

答案 0 :(得分:0)

   class LoaderTask extends AsyncTask<Void , Void ,String>{
        ProgressDialog progressDialog ;
        public LoaderTask(){
            progressDialog = new ProgressDialog(SplashActivity.this);
            progressDialog.setIndeterminate(false);
            progressDialog.setCancelable(false);
            progressDialog.setMessage("Loading app data...");
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            progressDialog.show();
        }

        @Override
        protected String doInBackground(Void... params) {

            return  connect("http://ec2-54-175-18-179.compute-1.amazonaws.com/customers/37.json");
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            progressDialog.dismiss();
            showPopUp(result);
        }
    }

    private String convertStreamToString(InputStream is) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }

    public String connect(String url)
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(url);
        HttpResponse response;
        try {
            response = httpclient.execute(httpget);
            //Log.i(TAG,response.getStatusLine().toString());
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                InputStream instream = entity.getContent();
                String result= convertStreamToString(instream);
                instream.close();
                return result;
            }
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
        }
        return null;
    }

    public void showPopUp(String result){
        try{
            JSONArray jsonArray = new JSONArray(result);
            for(int i = 0 ; i <  jsonArray.length() ; i++){
                JSONObject o = jsonArray.getJSONObject(i);
                String http_response = o.getString("offer");
                System.out.println("test   "+http_response);
                ObjectItemData[i] = new ObjectItem(http_response);
            }

          //and populate your listview here
        } catch(Exception e){e.printStackTrace();}
        finally{System.out.println("Success");

        }

    }

并将其命名为执行任务 new LoaderTask()。execute();