Android http keepalive solución, pero es permanente?

Tengo un botón de búsqueda que accede a un servidor cada vez que lo presione. El problema es que si lo presiono varias veces seguidas, funcionará bien. Sin embargo, si espero 5 segundos, la primera pulsación no funcionará. Simplemente no recibe una respuesta. La segunda pulsación funcionará y el siguiente botón presionará hasta que espere un cierto tiempo (~ 5 segundos)

Así que básicamente, a menos que esté constantemente buscando cosas nuevas en 5 segundos, su primera pulsación de botón no hará nada.

Esto se resuelve con el

System.setProperty("http.keepAlive", "false"); 

Sin embargo, he leído que esto se deshace de las conexiones persistentes donde una nueva conexión TCP tiene que hacerse cada vez que haga clic en ese botón. Esto es más lento pero no es buggy.

¿Es esto un mal arreglo? He leído que esto realmente no arregla nada. Me encantaría ayudar, gracias.

2 Solutions collect form web for “Android http keepalive solución, pero es permanente?”

Tu dijiste:

Sin embargo, si espero 5 segundos, la primera pulsación no funcionará. Simplemente no recibe una respuesta.

Creo que el servidor ni siquiera recibe una solicitud en su caso. Creo que establecer el http.keepAlive a false es una buena solución. He pasado una buena cantidad de tiempo investigando este problema y es más que obvio que se trata de un error en la biblioteca de Android.

La razón es que el servidor no quiere mantener todas esas conexiones abiertas debido a un número potencialmente grande de ellos por lo que cierra algunos de ellos de vez en cuando. Sin embargo, el conjunto de conexiones utilizado en la biblioteca de Android no desea aceptar este hecho e intenta usar la antigua conexión cerrada de todos modos.

Deshabilitar el http.keepAlive es una solución alternativa en lugar de una solución, pero obtendrá un manejo HTTP fiable, aunque con cierto costo de rendimiento.

Un ClientConnectionManager administra internamente las conexiones operadas, pero entrega las instancias de ManagedClientConnection. Esta interfaz abstrae de las operaciones de socket subyacentes y proporciona métodos convenientes para abrir y actualizar sockets para establecer una ruta. El operador es encapsulado por el gestor de conexión y llamado automáticamente.

Org.apache.http.conn

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.