无法解析Java-Reader
我的java语法有点问题,我被什么问题难住了。问题出在我的BufferedReader中:“finally{reader.close();}”,它说reader无法解决,但是在它前面的“try”中,它没有问题地解决了。下面是有问题的代码部分。我只是尝试使用OAuth2.0授权将推送的Twitter API 1.1 JSON结果解析为易于阅读的内容。我很感谢你的意见无法解析Java-Reader,java,json,twitter,oauth-2.0,try-catch-finally,Java,Json,Twitter,Oauth 2.0,Try Catch Finally,我的java语法有点问题,我被什么问题难住了。问题出在我的BufferedReader中:“finally{reader.close();}”,它说reader无法解决,但是在它前面的“try”中,它没有问题地解决了。下面是有问题的代码部分。我只是尝试使用OAuth2.0授权将推送的Twitter API 1.1 JSON结果解析为易于阅读的内容。我很感谢你的意见 /////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
// 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");
}
}
}
/////////////////////////////////////////////////////////////
//AsyncTask-下载带有令牌的Twitter提要作为授权
// //////////////////////////////////////////////////////////
受保护类loadTwitterFeed扩展异步任务{
@凌驾
受保护的整数doInBackground(Void…params){
试一试{
DefaultHttpClient httpclient=新的DefaultHttpClient(
新的BasicHttpParams());
HttpGet HttpGet=新的HttpGet(tweeterURL);
setHeader(“授权”、“承载者”+twitterToken);
setHeader(“内容类型”、“应用程序/json”);
InputStream InputStream=null;
HttpResponse response=httpclient.execute(httpget);
HttpEntity=response.getEntity();
inputStream=entity.getContent();
BufferedReader reader=新的BufferedReader(
新的InputStreamReader(inputStream,“UTF-8”),8);
返回null;
}
最后{
reader.close();
}
}
受保护的void onPostExecute(字符串结果){
StringBuilder sb=新的StringBuilder();
试一试{
JSONObject resultObject=新的JSONObject(结果);
org.json.JSONArray tweetArray=resultObject.getJSONArray(“结果”);
对于(int t=0;t0){
setText(jsonFeed.toString());
//if(jsonFeed.length()>0){
//setText(jsonFeed);
}否则{
//如果发生这种情况,我会假定错误的使用者密钥/机密。
setText(“未返回任何内容”);
}
}
}
声明读卡器
外部尝试
:
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();
}
谢谢你的帮助!虽然稍微调整了一下,但我已经排除了错误。谢谢你的帮助!if语句是我没有想到的。