2012-12-08 2 views
0

나는 json을 구문 분석하려고하지만, 문제가 있는데, 내 응용 프로그램을 실행할 때 다음 오류가 있습니다. 인쇄 로그를 시도하지만 인쇄되지 않습니다. 그는 내 rss.json을 읽을 수 없습니까? 또는 다른 probleM?AsyncTask # 1 bufferingreader

나는 치명적인 예외 무엇입니까 : AsyncTask를 # 1을 내가 AVD에 4.1.2

로그 캣

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 

AsyncTask를 코드를 코드를 실행할 수 있어요 로그 고양이 이 오류

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; 
    } 
} 

답변

1

아마도 가장 좋은 방법은 ab 귀하의 작업에 포인트 reak 및 그것을 통해 단계. 두 번째 try 블록이 적중 될 때까지 ips 변수가 null이라는 것은 나에게 떠오르는 것처럼 보일 것이다.

그런 경우 시도해 볼 수있는 한 가지 방법은 try 블록을 하나의 압축 블록으로 압축하고 catch 문을 결합하는 것입니다 (어쨌든 모두 동일한 작업을 수행하므로).

건배.