title: Getting socket connection timeout with localhost android
body: <p>I have created one api in local host using php. This as I test in postman its working well but when I am calling in the url from android its giving an exception of socket connection time out.</p>
  
  <p>Its ampps server, not able to connect.</p>
  
  <p>This is my php script:</p>
  
  <pre><code>    &lt;?php
  
  //echo error
  error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  ini_set('display_errors', '1');
  
  // require database
  require 'database.php';
  
  //get file input
  $jsonText = file_get_contents('php://input');
  
  //check params in file
  if (empty($jsonText)) {
      $response = array("status" =&gt; -1, "message" =&gt; "Empty request");
      die(json_encode($response));
  }
  
  try{
  
  //decode params in json
  $json = json_decode($jsonText);
  $mobile_no = $json-&gt;mobile_no;
  $device_id = $json-&gt;device_id;
  
  //init database connection
  $database = new Database(Constants::DBHOST, Constants::DBUSER, Constants::DBPASS, Constants::DBNAME);
  $dbConnection = $database-&gt;getDB();
  
  //query to insert device
  
  $statement = $dbConnection-&gt;prepare("INSERT INTO data(mobile_number, device_id)
      VALUES(:mobile_no, :device_id)");
  $statement-&gt;execute(array(
      "mobile_no" =&gt; $mobile_no,
      "device_id" =&gt; $device_id
  ));
      $newId = $dbConnection-&gt;lastInsertId();
  
      if($newId != null)
      {
          $response = array("status" =&gt; 1, "message" =&gt; "Success");
          die(json_encode($response));
      }
  }
  catch(PDOException $e) {
      echo $e-&gt;getMessage();
  }
  </code></pre>
  
  <p>Constants:</p>
  
  <pre><code>&lt;?php
  
  class Constants
  {
      const DBNAME = 'UserDevices';
      const DBUSER = 'fsdfsf';
      const DBPASS = 'fsdfsdfs';
      const DBHOST = '192.168.44.1';
  }
  
  ?&gt;
  </code></pre>
  
  <p>database</p>
  
  <pre><code>    &lt;?php
  require 'constants.php';
  
  class Database
  {
  
      private $dbhost;
      private $dbuser;
      private $dbpass;
      private $dbname;
  
  
      function Database($dbhost, $dbuser, $dbpass, $dbname)
      {
          $this-&gt;dbhost = $dbhost;
          $this-&gt;dbuser = $dbuser;
          $this-&gt;dbpass = $dbpass;
          $this-&gt;dbname = $dbname;
  
      }
  
      function getDB()
      {
  
          $mysql_conn_string = "mysql:host=$this-&gt;dbhost;dbname=$this-&gt;dbname;charset=utf8";
  
          try {
              $dbConnection = new PDO($mysql_conn_string, $this-&gt;dbuser, $this-&gt;dbpass);
              $dbConnection-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          } catch (PDOException $ex) {
  
              echo($ex-&gt;getMessage());
          }
  
          return $dbConnection;
      }
  }
  
  ?&gt;
  </code></pre>
  
  <p>android </p>
  
  <pre><code>    String token = tokenPreference.getString("token","");
  
      if(!token.equals("")) {
          //String cno=preferences.getString("cono",null);
          String[] keys = new String[] {"mobile_no", "device_id"};
          String[] values = new String[] {preferences.getString(Const.DRIVER_MOBILE_NUMBER,""), token};
  
          final String jsonRequest = SecondUtils.createJsonRequest(keys, values);
  
          String URL = "http://192.168.44.1/fuelOneTest/insertDevice.php";
  
  
  
          new WebserviceCall(MainDriver.this, URL, jsonRequest, "Loading", true, new AsyncResponse() {
              @Override
              public void onCallback(String response) {
                  Log.d("myapp", response);
  
                  //     Toast.makeText(RegisterDriver.this, model.getResponse_desc(), Toast.LENGTH_SHORT).show();
  
                  try {
                      JSONObject jsonObject = new JSONObject(response);
  
                      // change below condition to 0.. for testing it change to 1
                      if (jsonObject.get("message").equals("Success")) {
  
                          Log.d("DeviceToken", "Device token inserted.");
  
                      } else {
  
                      }
                  }catch (JSONException je)
                  {
                      je.printStackTrace();
                  }
              }
          }).execute();
      }
  
  public class WebserviceCall extends AsyncTask&lt;Void,Void,String&gt; {
  // interface for response
  
  AsyncResponse delegate;
  private final MediaType URLENCODE = MediaType.parse("application/json;charset=utf-8");
  ProgressDialog dialog;
  Context context;
  String dialogMessage;
  boolean showDialog = true;
  String URL;
  String jsonBody;
  
  public WebserviceCall(Context context, String URL, String jsonRequestBody, String dialogMessage, boolean showDialog, AsyncResponse delegate){
      this.context = context;
      this.URL = URL;
      this.jsonBody = jsonRequestBody;
      this.dialogMessage = dialogMessage;
      this.showDialog = showDialog;
      this.delegate = delegate;
  }
  
  @Override
  protected void onPreExecute() {
      super.onPreExecute();
  
      if(Utils.isNetworkAvailable(context)) {
  
  
          if (showDialog) {
              dialog = new ProgressDialog(context);
              dialog.setMessage(dialogMessage);
              dialog.show();
          }
      }
  
          else {
  
              Utils.showDialog(context, context.getString(R.string.networkWarning));
  
          }
  
  }
  
  
  @Override
  protected String doInBackground(Void... params) {
  
      // creating okhttp client
      OkHttpClient client = new OkHttpClient();
  
     //   client.setConnectTimeout(10L, TimeUnit.SECONDS);
      // creating request body
      RequestBody body;
      if(jsonBody != null) {
          body = RequestBody.create(URLENCODE, jsonBody);
      }else{
          body = null;
      };
  
          // creating request
          Request request = new Request.Builder()
                  .post(body)
                  .url(URL)
                  .build();
  
          // creating webserivce call and get response
  
          try {
              Response response = client.newCall(request).execute();
              String res = response.body().string();
              Log.d("myapp", res);
              return res;
  
          } catch (IOException e) {
              e.printStackTrace();
          }
  
  
      return null;
  }
  
  
  @Override
  protected void onPostExecute(String s) {
      super.onPostExecute(s);
      if(dialog != null &amp;&amp; showDialog){
          if(dialog.isShowing()){
              dialog.dismiss();
          }
      }
      if(s != null){
  
          delegate.onCallback(s);
      }else{
          Log.d("myapp",getClass().getSimpleName()+": response null");
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>why is it happening so? can anyone help me with this please?</p>