title: Android connected with PHP and MySQL using asynctask, but getting errors
body: <p>I am creating a login activity that need connection between <code>Android</code> and PHP <code>MySQL</code> so I used <code>AsyncTask</code> and <code>JSON</code> but the problem is that the system force clause and display in the logCat errors. Can anyone help me to fix this error?</p>
  
  <p>This is line 124 : <code>Log.d("Single person Details", json.toString());</code>.</p>
  
  <h1>log cat</h1>
  
  <pre><code>02-03 14:24:54.668: E/AndroidRuntime(1588): FATAL EXCEPTION: AsyncTask #3
  02-03 14:24:54.668: E/AndroidRuntime(1588): java.lang.RuntimeException: An error occured while executing doInBackground()
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.lang.Thread.run(Thread.java:841)
  02-03 14:24:54.668: E/AndroidRuntime(1588): Caused by: java.lang.NullPointerException
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at pack.coderzheaven.AndroidPHPConnectionDemo$CheckLogin.doInBackground(AndroidPHPConnectionDemo.java:124)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at pack.coderzheaven.AndroidPHPConnectionDemo$CheckLogin.doInBackground(AndroidPHPConnectionDemo.java:1)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
  02-03 14:24:54.668: E/AndroidRuntime(1588):     ... 4 more
  02-03 14:24:55.008: E/JSON Parser(1588): Error parsing data org.json.JSONException: Value You of type java.lang.String cannot be converted to JSONObject
  </code></pre>
  
  <h1>JSONParser.java</h1>
  
  <pre><code>package pack.coderzheaven;
  
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.UnsupportedEncodingException;
  import java.util.List;
  
  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.ClientProtocolException;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpGet;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.client.utils.URLEncodedUtils;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import android.util.Log;
  
  public class JSONParser {
  
      static InputStream is = null;
      static JSONObject jObj = null;
      static String json = "";
  
      // constructor
      public JSONParser() {
  
      }
  
      // function get json from url
      // by making HTTP POST or GET mehtod
      public JSONObject makeHttpRequest(String url, String method,
              List&lt;NameValuePair&gt; params) {
  
          // Making HTTP request
          try {
  
              // check for request method
          /*
              if(method == "POST"){
                  // request method is POST
                  // defaultHttpClient
                  DefaultHttpClient httpClient = new DefaultHttpClient();
                  HttpPost httpPost = new HttpPost(url);
                  httpPost.setEntity(new UrlEncodedFormEntity(params));
  
                  HttpResponse httpResponse = httpClient.execute(httpPost);
                  HttpEntity httpEntity = httpResponse.getEntity();
                  is = httpEntity.getContent();
  
              }
              */
               if(method == "GET"){
                  // request method is GET
                  DefaultHttpClient httpClient = new DefaultHttpClient();
                  String paramString = URLEncodedUtils.format(params, "utf-8");
                  url += "?" + paramString;
                  HttpGet httpGet = new HttpGet(url);
  
                  HttpResponse httpResponse = httpClient.execute(httpGet);
                  HttpEntity httpEntity = httpResponse.getEntity();
                  is = httpEntity.getContent();
              }           
  
  
          } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
          } catch (ClientProtocolException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
  
          try {
              BufferedReader reader = new BufferedReader(new InputStreamReader(
                      is, "iso-8859-1"), 8);
              StringBuilder sb = new StringBuilder();
              String line = null;
              while ((line = reader.readLine()) != null) {
                  sb.append(line + "\n");
              }
              is.close();
              json = sb.toString();
          } catch (Exception e) {
              Log.e("Buffer Error", "Error converting result " + e.toString());
          }
  
          // try parse the string to a JSON object
          try {
              jObj = new JSONObject(json);
          } catch (JSONException e) {
              Log.e("JSON Parser", "Error parsing data " + e.toString());
          }
  
          // return JSON String
          return jObj;
  
      }
  }
  </code></pre>
  
  <h1>AndroidPHPConnectionDemo.java</h1>
  
  <pre><code>package pack.coderzheaven;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.message.BasicNameValuePair;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import android.app.Activity;
  import android.app.ProgressDialog;
  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.TextView;
  
  public class AndroidPHPConnectionDemo extends Activity {
      Button b;
      EditText et, pass;
      String Username, Password;
      TextView tv;
      HttpPost httppost;
      StringBuffer buffer;
      HttpResponse response;
      HttpClient httpclient;
      List&lt;NameValuePair&gt; nameValuePairs;
  
      String pid;
  
      // Progress Dialog
      private ProgressDialog pDialog;
  
      // JSON parser class
      JSONParser jsonParser = new JSONParser();
  
      // single person url
      // ******************************************************************
  
      // the localhost in the genymotion emulator = 10.0.3.2
      // ******************************************************************
      private static final String url_check_login = "http://10.0.3.2/check.php";
  
      // JSON Node names
      private static final String TAG_SUCCESS = "success";
      private static final String TAG_PERSON = "person";
      private static final String TAG_PID = "pid";
      private static final String TAG_NAME = "username";
      private static final String TAG_pass = "password";
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
  
          b = (Button) findViewById(R.id.Button01);
          et = (EditText) findViewById(R.id.username);
          pass = (EditText) findViewById(R.id.password);
          tv = (TextView) findViewById(R.id.tv);
  
          b.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  // login();
  
                  // Getting complete person details in background thread
                  new CheckLogin().execute();
  
              }
          });
      }
  
      /**
       * Background Async Task to Get complete person details
       * */
      class CheckLogin extends AsyncTask&lt;String, String, String&gt; {
  
          JSONArray productObj;
  
          /**
           * Before starting background thread Show Progress Dialog
           * */
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
              pDialog = new ProgressDialog(AndroidPHPConnectionDemo.this);
              pDialog.setMessage("Loading person details. Please wait...");
              pDialog.setIndeterminate(false);
              pDialog.setCancelable(true);
              pDialog.show();
          }
  
          /**
           * Getting person details in background thread
           * */
  
          @Override
          protected String doInBackground(String... arg0) {
  
              // updating UI from Background Thread
  
              // Check for success tag
              int success;
              try {
                  // Building Parameters
                  List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
                  params.add(new BasicNameValuePair("pid", pid));
  
                  // getting person details by making HTTP request
                  // Note that person details url will use GET request
                  JSONObject json = jsonParser.makeHttpRequest(url_check_login,
                          "GET", params);
  
                  // check your log for json response
                  Log.d("Single person Details", json.toString());
  
                  // json success tag
                  success = json.getInt(TAG_SUCCESS);
                  if (success == 1) {
                      // successfully received person details
                      productObj = json.getJSONArray(TAG_PERSON); // JSON Array
  
                       JSONObject
  
                  }
  
                  else {
                      // product with pid not found
                  }
              } catch (JSONException e) {
                  e.printStackTrace();
              }
  
  
  
              return null;
          }
  
          /**
           * After completing background task Dismiss the progress dialog
           * **/
          protected void onPostExecute(String file_url) {
              // dismiss the dialog once got all details
              if (productObj != null) {
                  try {
                      // get first product object from JSON Array
                      JSONObject person = productObj.getJSONObject(0);
  
                      et.setText(person.getString(TAG_NAME));
                      pass.setText(person.getString(TAG_pass));
  
                      Log.e("success in login", "SUCCESS IN LOGIN");
  
                  } catch (Exception e) {
  
                      e.printStackTrace();
                  }
  
              }
  
              pDialog.dismiss();
          }
      }
  
  
  }
  </code></pre>
  
  <h1>check.php</h1>
  
  <pre><code>    &lt;?php
  
      require_once('db_config.php'); 
  
  
      // array for JSON response
      $response = array();
  
  
      //if(isset($_GET['Username'])and isset($_POST['Password'])){
  
        if(isset($_GET['pid'])){
      //   $username = $_POST['Username'];
      //   $password = $_POST['Password'];
  
           $pid = $_GET['pid'];   
  
      //   $query_search = "select username, password from members where username = '".$username."' AND password = '".$password. "'";
  
           $query_search = "select from members where pid = '".$pid."'";   
  
           $query_exec = mysql_query($query_search) or die(mysql_error());
  
         if (mysql_num_rows($query_exec) &gt; 0) 
         {
              $result = mysql_fetch_array($query_exec);
  
              $person = array();
              $person['username']=$result[username];
              $person['password']=$result['password'];
  
         // success
              $response["success"] = 1;
  
         // user node
              $response["person"] = array();
  
              array_push($response["person"], $person);
  
         // echoing JSON response
              echo json_encode($response);
  
          }
          else
          {
         // no user found
                  $response["success"] = 0;
                  $response["message"] = "No User found";
  
         // echo no users JSON
                 echo json_encode($response);
          }
      }
      else 
      {
          // required field is missing
          $response["success"] = 0;
          $response["message"] = "Required field(s) is missing";
  
          // echoing JSON response
          echo json_encode($response);
      }   
  
  
  ?&gt;
  </code></pre>