2012-05-17 8 views
11

Sto usando questo codice per ottenere gli indirizzi geografici:io java IOException in grado di analizzare la risposta dal geocoder del server

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"; 
} 

All'inizio mi è stato sempre un elenco di indirizzi è tornato, ma ora ricevo, ogni volta, questa eccezione:

java.io.IOException unable to parse response from server 

Si prega di aiutare.

+0

... Quindi ci sono due possibilità: 1: lo stato della rete è cambiato e non si ottiene una risposta dal server. Oppure, 2: hai cambiato qualcosa che ha infranto il tuo codice. Perché non torni indietro e assicurati di non aver cambiato nulla dal momento in cui ha funzionato fino ad ora. Se tutto va bene, assicurati di poter effettivamente raggiungere il server sulla rete con altri mezzi. Se hai ancora problemi, mostraci il tuo codice e il Logcat (= – dcow

+0

Il codice precedente e attuale è il 100% stesso –

+0

Così hai fatto le altre cose che ho suggerito? – dcow

risposta

6

Finalmente ho trovato la soluzione del mio problema.

Se si tenta di colpire di server molto frequentemente (più volte in un minuto) per ottenere l'indirizzo dal lat, long allora si può ottenere questa soluzione exception.The di questo problema possono essere:

1-Si prega di provare per evitare diversi colpi per indirizzo in un minuto.
2-Esegui questo codice su un altro dispositivo.

Se si desidera eseguire questo codice sullo stesso dispositivo, cancellare i dati dell'app (o disinstallare l'app) e attendere un po 'di tempo.

+0

Ho provato questo in due dispositivi motorola e samsung. Per Motorola sono in grado di ottenere i dati ma per il dispositivo Samsung ancora non riesco a risolverlo. Hai avuto un altro modo per risolvere questo problema. – John

+0

@Atul Bhardwaj: Anch'io sto affrontando lo stesso problema, cercando ancora di risolvere ma senza fortuna. –

+0

Come detto da John, funziona bene su alcuni dispositivi non su pochi dispositivi. Dopo un certo periodo di tempo, il riavvio del dispositivo fa funzionare la stessa funzionalità sui dispositivi che non erano stati prima. Sembra molto strano !. Qualcuno ha modo di risolvere questo problema? –

2

Ho avuto lo stesso problema con il mio Samsung Galaxy Tab 10.1. Cerco ore per una soluzione e nulla ha aiutato. Per risolvere i problemi cercano seguente:

Vai a impostazioni di localizzazione e consentono:

1.Utilizzare reti wireless 2.Utilizzare satelliti GPS

attesa per la posizione GPS fix

Dopo questo, il server geocoder risposto. Anche quando ho disattivato la posizione wireless e GPS, il server funzionava. Penso che geocoder possa essere utilizzato solo se condividi la tua posizione con Google.

0

La mia soluzione era:

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

mia causa del problema è stato non avere le autorizzazioni appropriate per il geocoder

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

mi è stato sempre lo stesso problema. ho aggiunto questa autorizzazione

android.permission.WRITE_EXTERNAL_STORAGE

e ha funzionato bene.

Problemi correlati