title: Android doesn't work if I use mobile data instead of wifi
body: <p>When I launch my android app and I try to do a login process using WiFi data, it's all right.
  But if I launch the app again and I try to to the same process using mobile data, the process still waiting until I get an error.</p>
  
  <p>The code is:</p>
  
  <pre><code>class AsyncLogin extends AsyncTask&lt; String, String, String &gt; {
      String username, password;
  
      protected void onPreExecute() {
          pDialog = new ProgressDialog(MainActivity.this);
          pDialog.setMessage("Login...");
          pDialog.setIndeterminate(false);
          pDialog.setCancelable(false);
          pDialog.show();
      }
  
      protected String doInBackground(String... params) {
          username = params[0];
          password = params[1];
  
          DefaultHttpClient httpClient = new DefaultHttpClient();
          HttpPost post = new HttpPost(URI_login);
          post.setHeader("content-type", "application/json");
  
          try {
              JSONObject jpost = new JSONObject();
              jpost.put("password", password);
              jpost.put("username", username);
  
              StringEntity entity = new StringEntity(jpost.toString(),"UTF-8"); 
              entity.setContentEncoding("UTF-8");
              entity.setContentType("application/json");
  
              post.setEntity(entity);
              HttpResponse resp = httpClient.execute(post);
              resultado = EntityUtils.toString(resp.getEntity());
  
              System.out.println("Nos llega: "+ resultado.toString() +"");
  
            **//UPDATE, I was returning null**
          } catch (JSONException e) {
              e.printStackTrace();
              return "e-json"; //
          } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
              return "e-encoding";
          } catch (ClientProtocolException e) {
              e.printStackTrace();
              return "e-client";
          } **catch (IOException e) {   ***//Now, this is the error***
              e.printStackTrace();
              return "e-io";**
          }
  
          return resultado.toString();
  
      }
      protected void onPostExecute(String result) {
         pDialog.dismiss();
         Log.e("onPostExecute=",""+result);
  
         if (result.equals("ok")){
             Intent i = new Intent(MainActivity.this, HiScreen.class);
             i.putExtra("user_hi", username);
             Log.e("onPostExecute= ", "Login is correct");
             login_ok();
             startActivity(i);
         }else{
              Log.e("onPostExecute= ", result);
         }
      }
  </code></pre>
  
  <p>Firstly, I thought that it would be due to permissions but I added:</p>
  
  <pre><code>&lt;uses-permission android:name="android.permission.INTERNET"/&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/&gt;
  &lt;uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/&gt;
  &lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/&gt;
  </code></pre>
  
  <p>and then, the Logcat returns me: <strong>[UPDATE]</strong>  </p>
  
  <pre><code>org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.104:8080 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183) 
          at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
      at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
      at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:374)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:575)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:498)
      at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:476)
      at com.josvalbae.androidrest_1.MainActivity$AsyncLogin.doInBackground(MainActivity.java:196)
      at com.josvalbae.androidrest_1.MainActivity$AsyncLogin.doInBackground(MainActivity.java:1)
      at android.os.AsyncTask$2.call(AsyncTask.java:288)
      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
      at java.lang.Thread.run(Thread.java:818)
      Caused by: java.net.ConnectException: failed to connect to /192.168.1.104 (port 8080): connect failed: ETIMEDOUT (Connection timed out)
      Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
  </code></pre>
  
  <p>I think, there is no problem with permissions.</p>
  
  <p>The problem is that I don't know if is due to how long the process or other aspect.<strong>[Timeout error]</strong> I was looking for on the Internet but I don't have any idea.</p>
  
  <p>Thanks!</p>