Android 异步任务#1缓冲读取器

Android 异步任务#1缓冲读取器,android,android-asynctask,Android,Android Asynctask,我尝试解析json,但我遇到了问题,当我运行我的应用程序时,我遇到了下一个错误。我试着打印日志,但没有打印出来。他看不懂我的rss.json?还是另一个问题 我遇到了致命的异常:AsyncTask#1日志中出现此错误 我能够在AVD 4.1.2上运行代码 Logcat FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() a

我尝试解析json,但我遇到了问题,当我运行我的应用程序时,我遇到了下一个错误。我试着打印日志,但没有打印出来。他看不懂我的rss.json?还是另一个问题

我遇到了致命的异常:AsyncTask#1日志中出现此错误 我能够在AVD 4.1.2上运行代码

Logcat

 FATAL EXCEPTION: AsyncTask #1
 java.lang.RuntimeException: An error occured while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:299)
    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    at java.lang.Thread.run(Thread.java:856)
 Caused by: java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:64)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:79)
    at com.gazetaimage.MainActivity$backTask.doInBackground(MainActivity.java:112)
    at com.gazetaimage.MainActivity$backTask.doInBackground(MainActivity.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:287)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    ... 5 more
致命异常:异步任务#1
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:299)
位于java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:124)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
位于java.util.concurrent.FutureTask.run(FutureTask.java:137)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
运行(Thread.java:856)
原因:java.lang.NullPointerException
位于java.io.Reader。(Reader.java:64)
位于java.io.InputStreamReader。(InputStreamReader.java:79)
位于com.gazetaimage.MainActivity$backTask.doInBackground(MainActivity.java:112)
位于com.gazetaimage.MainActivity$backTask.doInBackground(MainActivity.java:1)
在android.os.AsyncTask$2.call(AsyncTask.java:287)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 还有5个
异步任务代码

class backTask extends AsyncTask<String, Void, JSONObject>{     
    InputStream ips;
    String jstring = null;
    JSONObject jsonObj = null;
    MainActivity activity;
    @Override
    protected JSONObject doInBackground(String... params) {

        try {
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://mysite.com/RSS/gazeta.js");            
        HttpResponse response = client.execute(post);
        HttpEntity entity = response.getEntity();           
        ips = entity.getContent();
        Log.d("Log", ips.toString());
        } catch (ClientProtocolException e) {               
            e.printStackTrace();
        } catch (IOException e) {               
            e.printStackTrace();
        }

        try {
            //MainActivity.java:112 ERROR --->
            BufferedReader bufff = new BufferedReader(new InputStreamReader(ips, "UTF-8"));
            Log.d("Log", bufff.toString());
            StringBuilder sb = new StringBuilder();
            String line = "";

            while ((line = bufff.readLine()) != null){
                sb.append(line + "\n");
            }

            ips.close();
            jstring = sb.toString();


        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            jsonObj = new JSONObject(jstring);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return jsonObj;
    }       
    protected void onPostExecute(JSONObject result){
        super.onPostExecute(result);            
    }
    public void link(MainActivity mainActivity) {
        activity = mainActivity;        
    }       
    public void unlink() {
        activity = null;
    }
}
class backTask扩展了AsyncTask{
输入流IP;
字符串jstring=null;
JSONObject jsonObj=null;
主要活动;
@凌驾
受保护的JSONObject doInBackground(字符串…参数){
试一试{
DefaultHttpClient=新的DefaultHttpClient();
HttpPost=新的HttpPost(“http://mysite.com/RSS/gazeta.js");            
HttpResponse response=client.execute(post);
HttpEntity=response.getEntity();
ips=entity.getContent();
Log.d(“Log”,ips.toString());
}catch(ClientProtocolException e){
e、 printStackTrace();
}捕获(IOE){
e、 printStackTrace();
}
试一试{
//MainActivity.java:112错误--->
BufferedReader bufff=新的BufferedReader(新的InputStreamReader(ips,“UTF-8”);
Log.d(“Log”,bufff.toString());
StringBuilder sb=新的StringBuilder();
字符串行=”;
而((line=buff.readLine())!=null){
sb.追加(第+行“\n”);
}
ips.close();
jstring=sb.toString();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
jsonObj=新的JSONObject(jstring);
}捕获(JSONException e){
e、 printStackTrace();
}
返回jsonObj;
}       
受保护的void onPostExecute(JSONObject结果){
super.onPostExecute(结果);
}
公共无效链接(MainActivity MainActivity){
活动=主要活动;
}       
公共无效取消链接(){
活动=空;
}
}

您可能能做的最好的事情是在任务上设置一个断点并逐步完成它。在我看来(请注意,只需继续看一眼代码),当第二个try块被命中时,ips变量是空的

如果是这样的话,您可以尝试将try块压缩成一个单独的块,然后组合catch语句(因为它们都做相同的事情),看看这是否有帮助

干杯