Want more features on Pastebin? Sign Up, it's FREE!
Guest

JSON Parsing Simplified Try-Catch

By: bmote on Apr 4th, 2011  |  syntax: Java  |  size: 4.20 KB  |  views: 1,118  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package com.javacodegeeks.android.json;
  2.  
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.io.Reader;
  6. import java.util.List;
  7.  
  8. import org.apache.http.HttpEntity;
  9. import org.apache.http.HttpResponse;
  10. import org.apache.http.client.methods.HttpGet;
  11. import org.apache.http.impl.client.DefaultHttpClient;
  12.  
  13. import android.app.Activity;
  14. import android.content.Context;
  15. import android.os.AsyncTask;
  16. import android.os.Bundle;
  17. import android.util.Log;
  18. import android.view.View;
  19. import android.widget.Button;
  20. import android.widget.Toast;
  21.  
  22. import com.google.gson.Gson;
  23. import com.javacodegeeks.android.json.model.Result;
  24. import com.javacodegeeks.android.json.model.SearchResponse;
  25.  
  26. public class JsonParsingActivity extends Activity {
  27.  
  28.     private static final String url = "http://search.twitter.com/search.json?q=javacodegeeks";
  29.     protected InitTask _initTask;
  30.  
  31.     @Override
  32.     public void onCreate(Bundle savedInstanceState) {
  33.         super.onCreate(savedInstanceState);
  34.         setContentView(R.layout.main);
  35.  
  36.         Button button = (Button)findViewById(R.id.button1);
  37.         button.setOnClickListener(new View.OnClickListener() {
  38.             public void onClick(View v) {
  39.                 _initTask = new InitTask();
  40.                 _initTask.execute( getApplicationContext() );
  41.             }
  42.         });
  43.     }
  44.  
  45.     @Override
  46.     public void onStop() {
  47.         super.onStop();
  48.         _initTask.cancel(true);
  49.     }
  50.  
  51.     protected class InitTask extends AsyncTask<Context, String, SearchResponse>
  52.     {
  53.         @Override
  54.         protected SearchResponse doInBackground( Context... params )
  55.         {
  56.             InputStream source = retrieveStream(url);
  57.             SearchResponse response = null;
  58.             if (source != null) {
  59.                 Gson gson = new Gson();
  60.                 Reader reader = new InputStreamReader(source);
  61.                 try {
  62.                     response = gson.fromJson(reader, SearchResponse.class);
  63.                     publishProgress( response.query );
  64.                     reader.close();
  65.                 } catch (Exception e) {
  66.                     Log.w(getClass().getSimpleName(), "Error: " + e.getMessage() + " for URL " + url);
  67.                 }
  68.             }
  69.             if (!this.isCancelled()) {
  70.                 return response;
  71.             } else {
  72.                 return null;
  73.             }
  74.         }
  75.  
  76.         @Override
  77.         protected void onProgressUpdate(String... s)
  78.         {
  79.             super.onProgressUpdate(s);
  80.             Toast.makeText(getApplicationContext(), s[0], Toast.LENGTH_SHORT).show();
  81.         }
  82.  
  83.         @Override
  84.         protected void onPostExecute( SearchResponse response )
  85.         {
  86.             super.onPostExecute(response);
  87.             StringBuilder builder = new StringBuilder();
  88.             if (response != null) {
  89.                 String delim = "* ";
  90.                 List<Result> results = response.results;
  91.                 for (Result result : results) {
  92.                     builder.append(delim).append(result.fromUser);
  93.                     delim="\n* ";
  94.                 }
  95.             }
  96.             if (builder.length() > 0) {
  97.                 Toast.makeText(getApplicationContext(), builder.toString(), Toast.LENGTH_SHORT).show();
  98.             } else {
  99.                 Toast.makeText(getApplicationContext(), "The response was empty.", Toast.LENGTH_SHORT).show();
  100.             }
  101.  
  102.         }
  103.  
  104.         @Override
  105.         protected void onCancelled() {
  106.             super.onCancelled();
  107.             Toast.makeText(getApplicationContext(), "The operation was cancelled.", 1).show();
  108.         }
  109.  
  110.         private InputStream retrieveStream(String url) {
  111.             DefaultHttpClient client = new DefaultHttpClient();
  112.             HttpGet getRequest;
  113.             try {
  114.                 getRequest = new HttpGet(url);
  115.                 HttpResponse getResponse = client.execute(getRequest);
  116.                 HttpEntity getResponseEntity = getResponse.getEntity();
  117.                 return getResponseEntity.getContent();
  118.             } catch (Exception e) {
  119.                 Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
  120.                 return null;
  121.             }
  122.         }
  123.  
  124.     }
  125.  
  126. }
clone this paste RAW Paste Data