Actualización: encontrado la respuesta a mí mismo, ver a continuación :-)
Hola,Las solicitudes HTTP Post usando HttpClient tardan 2 segundos, ¿por qué?
Soy actualmente la codificación de una aplicación para Android que presenta cosas en el fondo mediante HTTP Post y AsyncTask. Yo uso el paquete org.apache.http.client para esto. Basé mi código en this example.
Básicamente, mi código es el siguiente:
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.137:8880/form");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
Log.e(TAG,e.toString());
} catch (IOException e) {
Log.e(TAG,e.toString());
}
}
El problema es que el httpclient.execute (..) línea de toma alrededor de 1,5 a 3 segundos, y no entiendo por qué. Simplemente solicitando una página con HTTP Get toma alrededor de 80 ms o menos, por lo que el problema no parece ser la latencia de la red en sí.
El problema tampoco parece ser del lado del servidor, también probé datos POST a http://www.disney.com/ con resultados lentos similares. Y Firebug muestra 1 ms de tiempo de respuesta al enviar datos a mi servidor localmente.
Esto sucede en el emulador y con mi Nexus One (ambos con Android 2.2).
Si quiere ver el código completo, lo he puesto en GitHub.
Es solo un programa ficticio hacer una publicación HTTP en segundo plano usando AsyncTask con solo presionar un botón. Es mi primera aplicación de Android y mi primer código de Java durante mucho tiempo. Y por separado, también mi primera pregunta sobre Stackoverflow ;-)
¿Alguna idea de por qué httpclient.execute (httppost) lleva tanto tiempo?
Estoy experimentando exactamente este mismo problema, excepto mucho peor. Incluso puede tomar más de 20 segundos terminar un 'HttpPost'.Probé tu solución pero no pareció ayudar. – theblang