2016-10-03 1 views
0
public class MainActivity extends AppCompatActivity { 
    public TextView textView;public Button clickMe; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     clickMe = (Button)findViewById(R.id.clickMe); 
     clickMe.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      new JsonClass().execute("www.webbanknepal.com/app/services.php"); 
     }}); 
    } 



    class JsonClass extends AsyncTask<String,Void,String> { 
     @Override 
     protected String doInBackground(String... params) { 
      HttpURLConnection connection=null; 
      BufferedReader reader=null; 
      try { 
       URL url= new URL(params[0]); 
       connection=(HttpURLConnection)url.openConnection(); 
       connection.connect(); 
       InputStream stream=connection.getInputStream(); 
       InputStreamReader isr= new InputStreamReader(stream); 
       reader =new BufferedReader(isr); 
       StringBuffer buffer=new StringBuffer(); 
       String line=""; 
       while((line=reader.readLine())!=null) 
       { 
        buffer.append(line); 

       } 
       return buffer.toString(); 



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

      } finally { 
       if(connection!=null){ connection.disconnect();} 
       try { 
        if(reader!=null){ reader.close();}; 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      textView= (TextView)findViewById(R.id.textView); 
      textView.setText(s.toString()); 
     } 

    } 

これは私のQUESTIOMNJSONエラー

ISは、(doInBackgroundを実行しながら、私のログの猫ファイル 致命的な例外

エラーが発生しています) at aone(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) のjava.util.concurrent.FutureTask.run(FutureTask.java:242) android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java :231) でjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) java.lang.Threadので java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) で.run(Thread.java:841) 原因:java.lang.NullPointerException com.example.shailendra.fulljson.MainActivity $ JsonClass.doInBackground(MainActivity.java:81) java.util.concurrent.FutureTaskでandroid.os.AsyncTask $ 2.callで com.example.shailendra.fulljson.MainActivity $ JsonClass.doInBackground(MainActivity.java:47) (AsyncTask.java:288) で 。 のjavaでandroid.os.AsyncTask $ SerialExecutor $ 1.runで実行(FutureTask.java:237) (AsyncTask.java:231) でjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) .util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587) java.lang.Thread.run(Thread.java:841)

+0

はこの戻りヌルをお試しください。 ""を返す。 –

+0

いいえエラーが発生します\ – rishav

+0

コードのデバッグを試み、サーバーからの応答が成功していることを確認し、 "buffer"にMainActivityの81行目のデータ – Meenal

答えて

1

を。コードを確認してください....

public class MainActivity extends AppCompatActivity { public TextView textView;public Button clickMe;@Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      clickMe= (Button)findViewById(R.id.clickMe);clickMe.setOnClickListener(
      new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
        new JsonClass().execute("http://www.webbanknepal.com/app/services.php"); 
        } 
      }); 
    } 


    class JsonClass extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... params) { 
     HttpURLConnection connection = null; 
     BufferedReader reader = null; 
     try { 
      URL url = new URL(params[0]); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 
      InputStream stream = connection.getInputStream(); 
      InputStreamReader isr = new InputStreamReader(stream); 
      reader = new BufferedReader(isr); 
      StringBuffer buffer = new StringBuffer(); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       buffer.append(line); 

      } 
      return buffer.toString(); 


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

     } finally { 
      if (connection != null) { 
       connection.disconnect(); 
      } 
      try { 
       if (reader != null) { 
        reader.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     TextView textView = (TextView) findViewById(R.id.textView); 
     textView.setText(s.toString()); 
    } 

    } 

}

+0

コードは正常に動作しますが、どこで変更するのか、何が変わるのか教えてください。 – rishav

+0

ああ、ありがとうございますhttpはありません – rishav

+0

if != null){reader.close();}; reader.close(); ここに問題があります –

0

のnull文字列をonPostExecute(String s)に渡しています。

この操作を行います。私はあなたのコードに少し変更し、それがうまく働い

public class MainActivity extends AppCompatActivity    
{   
    public TextView textView;   
    public Button clickMe;   
    public static String s;   
    @Override  
    protected void onCreate(Bundle savedInstanceState) 
    {  
    super.onCreate(savedInstanceState);  
    ...         
    ... 
    new JsonClass().execute("www.webbanknepal.com/app/services.php",null,s);  
    }});  
    } 
    class JsonClass extends AsyncTask<String,Void,String> 
    { @Override 
    protected String doInBackground(String... params) { 
    ... 
    ... 
    String line=""; 
      while((line=reader.readLine())!=null) 
      { 
       buffer.append(line); 

      } 
      s=buffer.toString(); 
      return s; 
+0

同じ問題java.lang.RuntimeException:doInBackground()の実行中にエラーが発生しました – rishav