title: Can´t connect Url with HttpUrlconnect
body: <p>This is my code in java: </p>
  
  <pre><code>Button conect = (Button) findViewById(R.id.btconect);
      conect.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              String userAgent = "Mozilla/5.0";
              String address = "http://192.168.20.110:8080/Proteos/http.php";
              String forSending = "Batman";
              String charset = "UTF-8";
  
              try {
                  URL URL = new URL(address);
                  HttpURLConnection connection = (HttpURLConnection)URL.openConnection();
                  connection.setRequestProperty("User-Agent", userAgent);
                  String stringToSend = URLEncoder.encode(forSending, charset);
                  //Para poder escribir datos a la URL
                  connection.setDoOutput(true);
                  connection.setDoInput(true);
  
                  // Indicamos el tipo de request, POST en este caso
                  connection.setRequestMethod("POST");
  
                  // Indicamos un timeout de 10 segundos
                  connection.setReadTimeout(10*1000);
  
                  OutputStreamWriter out = new OutputStreamWriter(
                          connection.getOutputStream());
                  out.write("nombre=" + stringToSend);
                  out.close();
  
                  BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                                  connection.getInputStream()));
                  String response;
                  while((response = in.readLine()) != null)
                      System.out.println(response);
                  in.close();
  
              } catch (IOException e) {
                  e.printStackTrace();
              }
  </code></pre>
  
  <p>My manifest</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.bmprietoc.httpconect"&gt;
  
      &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
      &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;
  
      &lt;application
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:supportsRtl="true"
          android:theme="@style/AppTheme"&gt;
          &lt;activity android:name=".MainActivity"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
  
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
      &lt;/application&gt;
  
  &lt;/manifest&gt;
  </code></pre>
  
  <p>I've tried to make useful the code but i can´t get the failure. The application stop always right in here:</p>
  
  <pre><code>OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
  </code></pre>
  
  <p>I change my code but the result is the same</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity {
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.
                  Builder().permitNetwork().build());
  
          Button conect = (Button) findViewById(R.id.btconect);
          conect.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  new connection().execute();
  
              }
          });
  
      }
  
      private class connection extends AsyncTask&lt;Void, Void, String&gt; {
  
          @Override
          protected String doInBackground(Void... params) {
              String userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0";
              String address = "http://localhost/form.php";
              String forSending = "Batman";
              String charset = "UTF-8";
  
              // El metodo encode() de URLEncoder se encarga de encodear la cadena que enviaremos
              // al servidor, sustituyendo espacios y caracteres especiales
              String stringToSend = null;
              try {
                  stringToSend = URLEncoder.encode(forSending, charset);
                  // 1. Creamos objeto URL
                  URL URL = new URL(address);
                  // 2. Obtenemos el objeto URLConnection llamando a openConnection() en URL
                  URLConnection connection = URL.openConnection();
                  // Establecemos algunas propiedas de envió, como es el User-Agent
                  connection.addRequestProperty("User-Agent", System.getProperty("http.agent"));
  
                  // 3. Esto es importantisímo, es aqui donde establecemos la capacidad de envió.
                  connection.setDoOutput(true);
  
                  // 4. Abrimos una conexión al recurso para poder escribir/enviar datos al formulario
                  // Nota que no se llama explícitamente a connect() porque llamados a getOutputStream()
                  OutputStreamWriter out = new OutputStreamWriter(
                          connection.getOutputStream());
                  out.write("nombre=" + stringToSend); // "nombre" es el campo del formulario web
                  out.close();
  
                  // Aquí leemos el resultado que nos devolvió el servidor, en efecto, lo que
                  // respondió form.php y luego de enviar los datos
                  BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                                  connection.getInputStream()));
                  String response;
                  while ((response = in.readLine()) != null)
                      System.out.println(response);
                  in.close();
  
              } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              } catch (MalformedURLException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
  
              return null;
          }
  
      }
  }
  </code></pre>
  
  <p>I change my code again like this.</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity {
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.
              Builder().permitNetwork().build());
  
      Button conect = (Button) findViewById(R.id.btconect);
      conect.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              new connection().execute();
  
          }
      });
  
  }
  
  private class connection extends AsyncTask &lt;Void,Void,String&gt; {
  
      @Override
      protected String doInBackground(Void... voids) {
          String userAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0";
          String address = "http://10.0.2.2/Proteos/http.php";
          String forSending = "Batman";
          String charset = "UTF-8";
  
          // El metodo encode() de URLEncoder se encarga de encodear la cadena que enviaremos
          // al servidor, sustituyendo espacios y caracteres especiales
          String stringToSend = null;
          try {
              stringToSend = URLEncoder.encode(forSending, charset);
              // 1. Creamos objeto URL
              URL URL = new URL(address);
              // 2. Obtenemos el objeto URLConnection llamando a openConnection() en URL
              URLConnection connection = URL.openConnection();
              // Establecemos algunas propiedas de envió, como es el User-Agent
              connection.addRequestProperty("User-Agent", userAgent);
  
              //System.getProperty("http.agent")
  
              // 3. Esto es importantisímo, es aqui donde establecemos la capacidad de envió.
              connection.setDoOutput(true);
              //connection.setConnectTimeout(50000);
  
              // 4. Abrimos una conexión al recurso para poder escribir/enviar datos al formulario
              // Nota que no se llama explícitamente a connect() porque llamados a getOutputStream()
              OutputStreamWriter out = new OutputStreamWriter(
                      connection.getOutputStream());
              out.write("nombre=" + stringToSend); // "nombre" es el campo del formulario web
              out.close();
  
              // Aquí leemos el resultado que nos devolvió el servidor, en efecto, lo que
              // respondió form.php y luego de enviar los datos
              BufferedReader in = new BufferedReader(
                      new InputStreamReader(
                              connection.getInputStream()));
              String response;
              while ((response = in.readLine()) != null)
                  System.out.println(response);
              in.close();
  
          } catch (UnsupportedEncodingException e) {
              e.printStackTrace();
          } catch (MalformedURLException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
          return null;
      }
  }
  </code></pre>
  
  <p>}</p>
  
  <p>And the logcat is</p>
  
  <pre><code>09-20 18:23:31.887 1465-1675/com.example.bmprietoc.httpconect W/System.err: java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect failed: ETIMEDOUT (Connection timed out)
  </code></pre>
  
  <p>It can't connect to the local host. I cant figure the problem out.</p>
  
  <p>Please help me.</p>