2012-05-17 12 views
11

używam tego kodu, aby uzyskać adresy geograficzne:io java IOException w stanie przeanalizować odpowiedź od serwera geokodera

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

Wcześniej byłem coraz lista adresów wrócił, ale teraz mam, za każdym razem, to wyjątek:

java.io.IOException unable to parse response from server 

Proszę o pomoc.

+0

... Istnieją dwie możliwości: 1: Stan sieci został zmieniony i użytkownik nie otrzymuje odpowiedzi z serwera. Lub, 2: Zmieniłeś coś, co złamało twój kod. Dlaczego nie wrócisz i upewnij się, że nic nie zmieniłeś od czasu, kiedy działał do teraz. Jeśli wszystko jest w porządku, upewnij się, że rzeczywiście możesz połączyć się z serwerem w sieci w inny sposób. Jeśli nadal masz problemy, pokaż nam swój kod i Logcat (= – dcow

+0

Poprzedni i bieżący kod jest w 100% taki sam –

+0

Więc czy zrobiłeś inne rzeczy, które zasugerowałem? – dcow

Odpowiedz

6

W końcu dostałem rozwiązanie mojego problemu.

Jeśli próbujesz trafić serwer bardzo często (kilka razy na minutę) dla uzyskania adresu od lat, długo potem można dostać ten rozwiązania exception.The tego problemu może być:

1-Spróbuj aby uniknąć kilku trafień dla adresu w minutę.
2-Uruchom ten kod na innym urządzeniu.

Jeśli chcesz uruchomić ten kod na tym samym urządzeniu, wyczyść dane aplikacji (lub odinstaluj aplikację) i odczekaj chwilę.

+0

Przetestowałem to w dwóch urządzeniach motorola i samsung. W przypadku Motorola mogę uzyskać dane, ale w przypadku urządzenia Samsung nadal nie mogę go naprawić. Czy masz jakiś inny sposób, aby to naprawić. – John

+0

@Atul Bhardwaj: Jestem zbyt zajęty tą samą kwestią, wciąż próbując rozwiązać, ale bez powodzenia. –

+0

Jak wspomniał John, działa dobrze na niektórych urządzeniach, nie na kilku urządzeniach. Po jakimś czasie/ponownym uruchomieniu urządzenia ta sama funkcjonalność działa na urządzeniach, które nie były wcześniej. Wygląda bardzo dziwnie !. Czy ktoś ma jakiś sposób, aby to naprawić? –

2

Miałem ten sam problem z moją kartą Samsung Galaxy Tab 10.1. Szukam godziny na rozwiązanie i nic nie pomogło. Aby rozwiązać problemy spróbować następujących czynności:

idź do ustawienia lokalizacji i umożliwiają:

1.Wykorzystanie sieci bezprzewodowych 2.Wykorzystanie satelitów GPS

czekać na lokalizacji GPS fix

po tym, serwer geocoder odpowiedział. Nawet po wyłączeniu lokalizacji bezprzewodowej i GPS, serwer działał. Myślę, że geokodera można używać tylko wtedy, gdy udostępniasz swoją lokalizację Google.

0

Moje rozwiązanie było:

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

Moja przyczyną problemu nie posiadające odpowiednich uprawnień do geokodera

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

I był już ten sam problem. I dodaje to uprawnienie

android.permission.WRITE_EXTERNAL_STORAGE

i to działało dobrze.

Powiązane problemy