Android 异步任务#1缓冲读取器
我尝试解析json,但我遇到了问题,当我运行我的应用程序时,我遇到了下一个错误。我试着打印日志,但没有打印出来。他看不懂我的rss.json?还是另一个问题 我遇到了致命的异常:AsyncTask#1日志中出现此错误 我能够在AVD 4.1.2上运行代码 LogcatAndroid 异步任务#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
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语句(因为它们都做相同的事情),看看这是否有帮助
干杯