0

I'm having a little trouble with my java syntax and I'm stumped to what's wrong. The problem lies in my BufferedReader in: "finally{reader.close();}" where it's saying reader cannot be resolved, but in the "try" immediately before it, it's resolved with no problem. Here is the section of code in question. I'm simply trying to parse pulled Twitter API 1.1 JSON results into something easy to read using oAuth 2.0 authorization. I'd appreciate the input.

    /////////////////////////////////////////////////////////////
// AsyncTask - Download Twitter Feed w/Token as authorization
// //////////////////////////////////////////////////////////

protected class loadTwitterFeed extends AsyncTask<Void, Void, Integer> {

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

         try{
            DefaultHttpClient httpclient = new DefaultHttpClient(
                    new BasicHttpParams());
            HttpGet httpget = new HttpGet(tweeterURL);
            httpget.setHeader("Authorization", "Bearer " + twitterToken);
            httpget.setHeader("Content-type", "application/json");

            InputStream inputStream = null;
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();

            inputStream = entity.getContent();
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(inputStream, "UTF-8"), 8);
            return null;
         }

    finally{
        reader.close();
    }
    }

         protected void onPostExecute(String result) {

            StringBuilder sb = new StringBuilder();
            try{
            JSONObject resultObject = new JSONObject(result);
            org.json.JSONArray tweetArray = resultObject.getJSONArray("results");
            for (int t=0; t<tweetArray.length(); t++) {
                JSONObject tweetObject = tweetArray.getJSONObject(t);
                sb.append(tweetObject.getString("from_user")+": ");
                sb.append(tweetObject.get("text")+"\n\n");
            }
            }
            catch (Exception e) {
                Log.e("Tweet", "Error retrieving JSON stream" + e.getMessage());
                jsonFeed = sb.toString();
                e.printStackTrace();
            }   

             }
        }
            /* String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            } */



    protected void onPostExecute(Integer result) {
        // Update GUI
        if (jsonFeed.length()>0){
            twitterText.setText(jsonFeed.toString());
        //if (jsonFeed.length() > 0) {
            //twitterText.setText(jsonFeed);
        } else {
             //I'd assume wrong Consumer Key/Secret if this happens.
            twitterText.setText("Nothing Returned");
        }       
    }
 }
reekdev
  • 13
  • 1
  • 8

2 Answers2

1

Declare reader outside try:

BufferedReader reader = null;
try {
reader = ..
..
}
finally {
if(reader != null)
reader.close();
}
harsh
  • 7,502
  • 3
  • 31
  • 32
1

Your BufferedReader is not in correct scope. Declare it outside of try block.

  BufferedReader reader =null;// Declare here.

  try{
     ............
   reader = new BufferedReader(
                new InputStreamReader(inputStream, "UTF-8"), 8);

   }
   finally{
    reader.close();
   }
Masudul
  • 21,823
  • 5
  • 43
  • 58