2012-05-17 13 views
11

Estoy usando este código para obtener direcciones geográficas:io java IOException no puede analizar la respuesta del geocodificador servidor

private String getAddress(Location location) 
{ 
    try{ 
     List<Address> addresses = new Geocoder(this,Locale.getDefault()).getFromLocation(location.getLatitude(), location.getLongitude(), 1); 
     if(addresses!=null) 
     { 
      String address="Address not available"; 

      for(int i=0;i<addresses.size();i++) 
      { 

       Address addre=addresses.get(i); 

       String street=addre.getAddressLine(0); 
       if(null==street) 
        street=""; 

       String city=addre.getLocality(); 
       if(city==null) city=""; 

       String state=addre.getAdminArea(); 
       if(state==null) state=""; 


       String country=addre.getCountryName(); 
       if(country==null) country=""; 

       address=street+", "+city+", "+state+", "+country; 

      } 
      return address; 
     } 

    } 
    catch (Exception e) { 
     return "Address not available"; 
    } 
    return "Address not available"; 
} 

Antes yo estaba haciendo una lista de direcciones regresó, pero ahora lo consiguen, cada vez, esta excepción:

java.io.IOException unable to parse response from server 

Por favor ayuda.

+0

... Así que hay dos posibilidades: 1: El estado de la red cambió y no se obtiene una respuesta del servidor. O bien, 2: Cambió algo que rompió su código. ¿Por qué no vuelves y te aseguras de no haber cambiado nada desde el momento en que estaba funcionando hasta ahora? Si todo está bien, asegúrate de que puedes llegar al servidor en la red por otros medios. Si todavía tiene problemas, muéstrenos su código y el Logcat (= – dcow

+0

El código anterior y actual es 100% el mismo –

+0

¿Hizo usted las otras cosas que sugerí? – dcow

Respuesta

6

Finalmente obtuve la solución a mi problema.

Si intenta golpear servidor muy frecuentemente (varias veces en un minuto) para obtener la dirección de latitud, longitud, entonces puede obtener estas soluciones exception.The de este problema pueden ser:

1-Inténtelo para evitar varios golpes de dirección en un minuto.
2-Ejecute este código en un dispositivo diferente.

Si desea ejecutar este código en el mismo dispositivo, borre los datos de su aplicación (o desinstale su aplicación) y espere un tiempo.

+0

He probado esto en dos dispositivos, Motorola y Samsung. Para Motorola, puedo obtener los datos, pero para el dispositivo Samsung todavía no puedo solucionarlo. ¿Conseguiste otra forma de arreglar esto? – John

+0

@Atul Bhardwaj: Yo también estoy enfrentando el mismo problema, aún estoy tratando de resolverlo pero no tengo suerte. –

+0

Como mencionó John, está funcionando bien en algunos dispositivos, no en algunos dispositivos. Después de algún tiempo/reiniciar el dispositivo hace que la misma funcionalidad funcione en los dispositivos que no se habían usado anteriormente. ¡Parece muy extraño !. ¿Alguien tiene alguna forma de arreglar esto? –

2

Tuve el mismo problema con mi Samsung Galaxy Tab 10.1. Busco horas para encontrar una solución y nada me ayudó. Para solucionar los problemas tratan siguiente:

Ir a Ajustes de ubicación y permiten:

1.Utilice redes inalámbricas satélites GPS 2.Use

espera para fijar la ubicación GPS

Después de esto, el servidor geocodificador respondido Incluso cuando deshabilité la ubicación inalámbrica y GPS, el servidor estaba funcionando. Creo que el geocodificador solo se puede usar si comparte su ubicación con Google.

0

Mi solución fue:

Settings > Date & Time > Automatic date & time (Use network-provided time) 
0

Mi causa del problema fue no tener los permisos adecuados para el geocodificador

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
0

que estaba recibiendo el mismo problema. he añadido este permiso

android.permission.WRITE_EXTERNAL_STORAGE

y funcionó bien.

Cuestiones relacionadas