He creado la siguiente función para verificar el estado de la conexión:
private void checkConnectionStatus() {
HttpClient httpClient = new DefaultHttpClient();
try {
String url = "http://xxx.xxx.xxx.xxx:8000/GaitLink/"
+ strSessionString + "/ConnectionStatus";
Log.d("phobos", "performing get " + url);
HttpGet method = new HttpGet(new URI(url));
HttpResponse response = httpClient.execute(method);
if (response != null) {
String result = getResponse(response.getEntity());
...
Cuando apago el servidor para probar, la ejecución espera mucho tiempo en la línea
HttpResponse response = httpClient.execute(method);
¿Alguien sabe cómo configurar el tiempo de espera para evitar esperar demasiado?
¡Gracias!
java
android
timeout
httpresponse
Niko Gamulin
fuente
fuente
Para establecer la configuración en el cliente:
Lo he usado con éxito en JellyBean, pero también debería funcionar para plataformas más antiguas ...
HTH
fuente
Si está utilizando la biblioteca de cliente http de Yakarta, puede hacer algo como:
fuente
Si está utilizando el cliente http predeterminado, a continuación se explica cómo hacerlo utilizando los parámetros http predeterminados:
El crédito original va a http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/
fuente
Para aquellos que dicen que la respuesta de @ kuester2000 no funciona, tenga en cuenta que las solicitudes HTTP, primero intente encontrar la IP del host con una solicitud DNS y luego realice la solicitud HTTP real al servidor, por lo que también puede necesitar configurar un tiempo de espera para la solicitud de DNS.
Si su código funcionó sin el tiempo de espera para la solicitud DNS es porque puede acceder a un servidor DNS o está accediendo al caché DNS de Android. Por cierto, puede borrar este caché reiniciando el dispositivo.
Este código extiende la respuesta original para incluir una búsqueda DNS manual con un tiempo de espera personalizado:
Método utilizado:
Esta clase es de esta publicación de blog . Ve y verifica los comentarios si lo vas a usar.
fuente
fuente
puede crear una instancia de HttpClient por cierto con Httpclient-android-4.3.5, puede funcionar bien.
fuente
Una opción es usar el cliente OkHttp , de Square.
Agregar la dependencia de la biblioteca
En build.gradle, incluya esta línea:
¿Dónde
x.x.x
está la versión de biblioteca deseada?Establecer el cliente
Por ejemplo, si desea establecer un tiempo de espera de 60 segundos, haga lo siguiente:
ps: si tu minSdkVersion es mayor que 8, puedes usarlo
TimeUnit.MINUTES
. Entonces, simplemente puede usar:Para más detalles sobre las unidades, vea TimeUnit .
fuente
Si está utilizando
HttpURLConnection
, llamesetConnectTimeout()
como se describe aquí :fuente
fuente