This is my code in java:
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();
}
My manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bmprietoc.httpconect">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
I've tried to make useful the code but i can´t get the failure. The application stop always right in here:
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
I change my code but the result is the same
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<Void, Void, String> {
@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;
}
}
}
I change my code again like this.
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 <Void,Void,String> {
@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;
}
}
}
And the logcat is
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)
It can't connect to the local host. I cant figure the problem out.
Please help me.