简体   繁体   中英

HTTP Get Request in Android json

  1. Hi, i don't undestand why this doesn't work, i am trying to retrieve whatever comes after "offer" in the specified url and then display it but when i click on the Offer button on android screen nothing happens. Please help if you could. I have the internet permission in manifest.

     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; 

public class LoggedIn extends 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");

    }
}

}

   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");

        }

    }

and call this to do task new LoaderTask().execute();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM