Java-Reader не может быть разрешен

У меня небольшие проблемы с моим синтаксисом java, и я в тупик к тому, что неправильно. Проблема заключается в моем BufferedReader в: "finally {reader.close();}", где он говорит, что читатель не может быть разрешен, но в "попытке" непосредственно перед ним он разрешился без проблем. Вот раздел кода, о котором идет речь. Я просто пытаюсь разобрать выведенные результаты Twitter API 1.1 JSON во что-то легкое для чтения с использованием авторизации oAuth 2.0. Буду признателен за ввод.

/////////////////////////////////////////////////////////////
// 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");
 } 
 }
 }
</tweetarray.length();></void,>
2 ответа

Объявить reader за пределами try:

BufferedReader reader = null;
try {
reader = ..
..
}
finally {
if(reader != null)
reader.close();
}


Ваш BufferedReader не в правильной области. Объявите его вне блока try.

BufferedReader reader =null;// Declare here.

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

 }
 finally{
 reader.close();
 }

licensed under cc by-sa 3.0 with attribution.