Java io 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 

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

Ответ 1

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

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

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

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

Ответ 2

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

Перейдите в Настройки местоположения и включите:

1. Использование беспроводных сетей 2. Использование GPS-спутников

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

У меня была такая же проблема. Я добавил это разрешение

android.permission.WRITE_EXTERNAL_STORAGE

и это сработало хорошо.