2012-05-17 3 views
11

Я использую этот код, чтобы получить географические адреса:ява -й IOException не смогло разобрать ответ от сервера геокодера

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

Раньше я получал список адресов вернулся, но теперь я получаю, каждый раз, это исключение:

java.io.IOException unable to parse response from server 

Пожалуйста, помогите.

+0

... Так что есть два варианта: 1: Состояние сети изменилось, и вы не получаете ответа от сервера. Или, 2: Вы изменили что-то, что сломало ваш код. Почему бы вам не вернуться и убедиться, что вы ничего не изменили с того времени, когда работали до сих пор. Если все хорошо, убедитесь, что вы действительно можете достичь сервера в сети, хотя и другими способами. Если у вас все еще есть проблемы, покажите нам свой код и Logcat (= – dcow

+0

Предыдущий и текущий код на 100% одинаковый –

+0

Так вы сделали другие вещи, которые я предложил? – dcow

ответ

6

Наконец-то я получил решение своей проблемы.

Если вы пытаетесь ударить сервер очень часто (несколько раз в минуту) для получения адреса от лат, длинные, то вы можете получить это решение exception.The этой проблемы может быть:

1-Пожалуйста, попробуйте чтобы избежать нескольких обращений за адресом через минуту.
2-Запустите этот код на другом устройстве.

Если вы хотите запустить этот код на одном устройстве, очистите данные приложения (или удалите приложение) и подождите некоторое время.

+0

Я протестировал это в двух устройствах Motorola и Samsung. Для Motorola я могу получить данные, но для устройства samsung все еще не могу это исправить. У вас был другой способ исправить это. – John

+0

@Atul Bhardwaj: Я тоже сталкиваюсь с той же проблемой, все еще пытаюсь решить, но не повезло. –

+0

Как упоминал Джон, его работоспособность на некоторых устройствах не на нескольких устройствах. После того, как-то/перезагрузка устройства делает ту же функциональность, что и на устройствах, которые раньше не были. Получается очень странно !. У кого-нибудь есть способ исправить это? –

2

У меня была такая же проблема с моей Samsung Galaxy Tab 10.1. Я ищу часы для решения, и ничего не помогло. Чтобы устранить проблемы, попробуйте следующее:

Перейти к настройкам Место и включить:

1.Use Беспроводные сети спутников GPS 2.Use

ждать местоположения GPS исправить

После этого сервер геокодирования ответил. Даже когда я отключил беспроводное и GPS-местоположение, сервер работал. Я думаю, что геокодер можно использовать, только если вы поделитесь своим местоположением с Google.

0

Мое решение было:

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

Моя причина проблемы не имея соответствующие разрешения для геокодером

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

я получаю ту же проблему. я добавил это разрешение

android.permission.WRITE_EXTERNAL_STORAGE

и она работала хорошо.

Смежные вопросы