2014-10-02 181 views
-1

我在下面的代码中发生错误,为http请求调用asyn方法。它在doInBackground()方法中给我一个java.lang.RuntimeException错误。执行doInBackground()时发生AsyncTask错误()

_____________MAIN class____________

TextView testoInput = (TextView) findViewById(R.id.input); 
     final String località = testoInput.getText().toString(); 

    bottone1.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      TaskAsincrono nuovo = new TaskAsincrono(); 
      nuovo.execute(località); 
     } 

__________ASYNC Class________

公共类TaskAsincrono延伸的AsyncTask> {

protected ArrayList<String> doInBackground(String...params) { 
     String s = params[0]; 

     ArrayList<String> risultato =null; 

     //Inizio sessione di invio dati rest con sistema GET 
     DefaultHttpClient client = new DefaultHttpClient(); 

      String url ="http://www.replycoupon.it/php/rest_Server/index.php?nome="+s; 
      try { 
      URI uri = new URI(url); 

      HttpGet get = new HttpGet(uri); 

      HttpResponse res = client.execute(get); 

      InputStream data = res.getEntity().getContent(); 

      //Inizio l'operazione di buffering per la lettura 

      BufferedReader streamReader = new BufferedReader(new InputStreamReader(data)); 
      StringBuilder responseStrBuilder = new StringBuilder(); 

      String inputStr =null; 

      while ((inputStr = streamReader.readLine()) != null) 
       responseStrBuilder.append(inputStr); 


       JSONObject jObj = new JSONObject(responseStrBuilder.toString()); 

       String clima = jObj.getString("clima"); 
       String temperatura = jObj.getString("temperatura"); 

       //Prima di inviare alla main metto il risultato in un arrylist 


       risultato.add(clima); 
       risultato.add(temperatura); 

     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (URISyntaxException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
       return risultato; 

    } 

    protected void onPostExecute(final ArrayList<String> risultato) { 
     final TextView testoClima = (TextView) findViewById(R.id.Output); 
     final TextView testoTemp = (TextView) findViewById(R.id.Output2); 
     testoClima.setText(risultato.get(0).toString()); 
     testoTemp.setText(risultato.get(1).toString()); 
    } 



} 

LOG

10-02 20:53:07.068: D/dalvikvm(4050): GC_FOR_ALLOC freed 234K, 4% free 7914K/8188K, paused 16ms, total 16ms 
10-02 20:53:09.728: W/dalvikvm(4050): threadid=11: thread exiting with uncaught exception (group=0x41800ba8) 
10-02 20:53:09.728: E/AndroidRuntime(4050): FATAL EXCEPTION: AsyncTask #1 
10-02 20:53:09.728: E/AndroidRuntime(4050): Process: luca.tirocinio.client_json, PID: 4050 
10-02 20:53:09.728: E/AndroidRuntime(4050): java.lang.RuntimeException: An error occured while executing doInBackground() 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at android.os.AsyncTask$3.done(AsyncTask.java:300) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.lang.Thread.run(Thread.java:841) 
10-02 20:53:09.728: E/AndroidRuntime(4050): Caused by: java.lang.NullPointerException 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at luca.tirocinio.client_json.MainActivity$TaskAsincrono.doInBackground(MainActivity.java:117) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at luca.tirocinio.client_json.MainActivity$TaskAsincrono.doInBackground(MainActivity.java:1) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at android.os.AsyncTask$2.call(AsyncTask.java:288) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
10-02 20:53:09.728: E/AndroidRuntime(4050):  ... 4 more 
10-02 20:53:13.768: I/Process(4050): Sending signal. PID: 4050 SIG: 9 
+0

我们可以在logcat中看到错误吗? – GVillani82 2014-10-02 19:20:01

+0

对不起,是的,我添加了 – 2014-10-02 19:53:25

+0

什么是117行? – Mohit 2014-10-02 19:57:25

回答

0

您正试图将结果添加到ArrayList<String> risultato,该值为空。只需将其替换为ArrayList<String> risultato = new ArrayList<String>();

+0

非常感谢! – 2014-10-02 22:47:32

相关问题