title: How to display json response in Asynctask in android
body: <p>i am try to developed login module in android for that i created table on server side and return json response which return userid ,username and password.i used Asynctask to connect to the url and read the data from server in doInBackground().when i run the programme it shows login unsuccessfull message.i dont know why it shows.i did lot of R&amp;D but i am not get solution. Here is my full source code</p>
  
  <pre><code>package com.example.tours;
  import java.io.BufferedReader;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.util.ArrayList;
  import java.util.List;
  
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.message.BasicNameValuePair;
  import org.json.JSONArray;
  import org.json.JSONObject;
  
  import android.app.Activity;
  import android.app.ProgressDialog;
  import android.content.Intent;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.Toast;
  
  public class login extends Activity implements OnClickListener
  {
  
  
      Button btnback,btnlog;
      EditText e1,e2;
      List&lt;NameValuePair&gt;nameValuePairs;
      ProgressDialog progressdialog;
      InputStream is=null;
      JSONObject jsonobject=null;
      String Json="";
      String oneObjectsItem="";
      String oneObjectsItem2="";
      String oneObjectsItem3="";
  
      protected void onCreate(Bundle savedInstanceState) 
      {
          // TODO Auto-generated method stub
          super.onCreate(savedInstanceState);
          setContentView(R.layout.login);
          e1=(EditText)findViewById(R.id.editTextuser);
          e2=(EditText)findViewById(R.id.editTextpass);
  
  
          btnback=(Button)findViewById(R.id.btnback);
          btnlog=(Button)findViewById(R.id.btnlogin);
          btnback.setOnClickListener(this);
          btnlog.setOnClickListener(this);
  
      }
  
      @Override
      public void onClick(View v) 
      {
          // TODO Auto-generated method stub
          switch(v.getId())
          {
          case R.id.btnback:Intent i=new Intent(login.this,MainActivity.class);
          startActivity(i);
          break;
          case R.id.btnlogin:// check username and pass so point to php file and build param
  
              new CallAsyncTask().execute();
              }
  
          }
  
          public class CallAsyncTask extends AsyncTask&lt;String,String,String&gt;
          {
  
              @Override
              protected String doInBackground(String... arg0) 
              {
                  // TODO Auto-generated method stub
                  // code for checking user name and password
                  try
                  {
                  HttpClient httpclient = new DefaultHttpClient();
                  HttpPost httppost = new HttpPost("http://deepakg0.0fees.net/login.php");
                  // Build The parameter
                  nameValuePairs = new ArrayList&lt;NameValuePair&gt;(2);
                  nameValuePairs.add(new BasicNameValuePair("UserName",e1.getText().toString()));
                  nameValuePairs.add(new BasicNameValuePair("UserPass",e2.getText().toString()));
  
                  httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
  
                  // generate responce
                  HttpResponse  response = httpclient.execute(httppost);
                  HttpEntity entity = response.getEntity();
                  }
                  catch(Exception e1)
                  {
                      Toast.makeText(getBaseContext(), "Errror"+e1.toString(), Toast.LENGTH_LONG).show();
                  }
                  //read the responce into string
                  try
                  {
                    BufferedReader reader=new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    StringBuilder builder=new StringBuilder();
                    String line=null;
                    while((line=reader.readLine())!=null)
                    {
                        builder.append(line+"\n");
                    }
                    is.close();
                    Json=builder.toString();
                  }
                  catch(Exception e2 )
                  {
                      Log.d("Buffer","failed"+e2.toString());
                  }
                  // create the json object
                  try
                  {
                  jsonobject = new JSONObject(Json);
                  JSONArray jArray = jsonobject.getJSONArray("result");
                  // iterate through the array and fetch the keys
                  for(int i=0;i&lt;jArray.length();i++)
                  {
                      // fetch the object and their keys
                      JSONObject oneObject = jArray.getJSONObject(i);
                      // Pulling items from the array
                       oneObjectsItem = oneObject.getString("uid");
                       oneObjectsItem2 = oneObject.getString("username");
                       oneObjectsItem3 = oneObject.getString("password");
                  }
                  }
                  catch(Exception e3)
                  {
                      Log.d("InJson","error"+e3.toString());
  
                  }
                  if((e1.getText().toString().equalsIgnoreCase(oneObjectsItem2)&amp;&amp;(e1.getText().toString().equalsIgnoreCase(oneObjectsItem2))))
                  {
                          Toast.makeText(getApplicationContext(),"Login Successfull",Toast.LENGTH_LONG).show();
  
                  }
                  else
                  {
                          Toast.makeText(getApplicationContext(),"Login Unsuccessfull",Toast.LENGTH_LONG).show();
                   }
  
                  return null;
              }
  
              @Override
              protected void onPostExecute(String result) 
              {
                  // TODO Auto-generated method stub              
                  super.onPostExecute(result);
  
                  Toast.makeText(getApplicationContext(),"Output"+Json,Toast.LENGTH_LONG).show();
                  progressdialog.dismiss();
              }
  
              @Override
              protected void onPreExecute() 
              {
                  // TODO Auto-generated method stub
                  super.onPreExecute();
                  progressdialog=new ProgressDialog(login.this);
                  progressdialog.setMessage("Checking username and password please wait");
  
                  //progressdialog.setIndeterminate(false);
                  //progressdialog.setCancelable(false);
                  progressdialog.show();
              }
  
          }
  
  }
  </code></pre>
  
  <p>Here is My Log cat</p>
  
  <pre><code>09-11 18:33:50.809: E/AndroidRuntime(985): FATAL EXCEPTION: AsyncTask #1
  09-11 18:33:50.809: E/AndroidRuntime(985): java.lang.RuntimeException: An error occured while executing doInBackground()
  09-11 18:33:50.809: E/AndroidRuntime(985):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.lang.Thread.run(Thread.java:1096)
  09-11 18:33:50.809: E/AndroidRuntime(985): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
  09-11 18:33:50.809: E/AndroidRuntime(985):  at android.os.Handler.&lt;init&gt;(Handler.java:121)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at android.widget.Toast.&lt;init&gt;(Toast.java:68)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at android.widget.Toast.makeText(Toast.java:231)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at com.example.tours.login$CallAsyncTask.doInBackground(login.java:143)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at com.example.tours.login$CallAsyncTask.doInBackground(login.java:1)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
  09-11 18:33:50.809: E/AndroidRuntime(985):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
  09-11 18:33:50.809: E/AndroidRuntime(985):  ... 4 more
  09-11 18:33:51.939: E/WindowManager(985): Activity com.example.tours.login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44ea9be0 that was originally added here
  09-11 18:33:51.939: E/WindowManager(985): android.view.WindowLeaked: Activity com.example.tours.login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44ea9be0 that was originally added here
  09-11 18:33:51.939: E/WindowManager(985):   at android.view.ViewRoot.&lt;init&gt;(ViewRoot.java:247)
  09-11 18:33:51.939: E/WindowManager(985):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
  09-11 18:33:51.939: E/WindowManager(985):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
  09-11 18:33:51.939: E/WindowManager(985):   at android.view.Window$LocalWindowManager.addView(Window.java:424)
  09-11 18:33:51.939: E/WindowManager(985):   at android.app.Dialog.show(Dialog.java:241)
  09-11 18:33:51.939: E/WindowManager(985):   at com.example.tours.login$CallAsyncTask.onPreExecute(login.java:175)
  09-11 18:33:51.939: E/WindowManager(985):   at android.os.AsyncTask.execute(AsyncTask.java:391)
  09-11 18:33:51.939: E/WindowManager(985):   at com.example.tours.login.onClick(login.java:73)
  09-11 18:33:51.939: E/WindowManager(985):   at android.view.View.performClick(View.java:2408)
  09-11 18:33:51.939: E/WindowManager(985):   at android.view.View$PerformClick.run(View.java:8816)
  09-11 18:33:51.939: E/WindowManager(985):   at android.os.Handler.handleCallback(Handler.java:587)
  09-11 18:33:51.939: E/WindowManager(985):   at android.os.Handler.dispatchMessage(Handler.java:92)
  09-11 18:33:51.939: E/WindowManager(985):   at android.os.Looper.loop(Looper.java:123)
  09-11 18:33:51.939: E/WindowManager(985):   at android.app.ActivityThread.main(ActivityThread.java:4627)
  09-11 18:33:51.939: E/WindowManager(985):   at java.lang.reflect.Method.invokeNative(Native Method)
  09-11 18:33:51.939: E/WindowManager(985):   at java.lang.reflect.Method.invoke(Method.java:521)
  09-11 18:33:51.939: E/WindowManager(985):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  09-11 18:33:51.939: E/WindowManager(985):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  09-11 18:33:51.939: E/WindowManager(985):   at dalvik.system.NativeStart.main(Native Method)
  09-11 18:37:28.179: D/dalvikvm(1068): GC_FOR_MALLOC freed 3655 objects / 178624 bytes in 102ms
  09-11 18:37:30.439: D/Buffer(1068): failedjava.lang.NullPointerException
  09-11 18:37:30.449: D/InJson(1068): errororg.json.JSONException: End of input at character 0 of 
  09-11 18:40:14.559: D/dalvikvm(1095): GC_FOR_MALLOC freed 3809 objects / 182976 bytes in 96ms
  09-11 18:40:16.769: D/Buffer(1095): failedjava.lang.NullPointerException
  09-11 18:40:16.769: D/InJson(1095): errororg.json.JSONException: End of input at character 0 of 
  09-11 18:45:17.069: D/Buffer(1095): failedjava.lang.NullPointerException
  09-11 18:45:17.069: D/InJson(1095): errororg.json.JSONException: End of input at character 0 of 
  09-11 19:07:09.619: D/dalvikvm(1095): GC_FOR_MALLOC freed 5200 objects / 195696 bytes in 98ms
  09-11 19:07:09.840: D/dalvikvm(1095): GC_FOR_MALLOC freed 881 objects / 411168 bytes in 167ms
  09-11 19:07:12.139: D/Buffer(1095): failedjava.lang.NullPointerException
  09-11 19:07:12.139: D/InJson(1095): errororg.json.JSONException: End of input at character 0 of 
  09-11 19:07:12.219: D/Buffer(1095): failedjava.lang.NullPointerException
  09-11 19:07:12.219: D/InJson(1095): errororg.json.JSONException: End of input at character 0 of 
  </code></pre>