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 

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


person Atul Bhardwaj    schedule 17.05.2012    source источник
comment
... Итак, есть две возможности: 1: Состояние сети изменилось, и вы не получаете ответа от сервера. Или 2: вы изменили что-то, что сломало ваш код. Почему бы вам не вернуться назад и не убедиться, что вы ничего не меняли с тех пор, как он работал, и до сих пор. Если все в порядке, убедитесь, что вы действительно можете подключиться к серверу в сети другими способами. Если у вас все еще есть проблемы, покажите нам свой код и Logcat (=   -  person dcow    schedule 17.05.2012
comment
Предыдущий и текущий код совпадают на 100%.   -  person Atul Bhardwaj    schedule 17.05.2012
comment
Так ты сделал другие вещи, которые я предложил?   -  person dcow    schedule 17.05.2012
comment
@David Я сделал все, что ты предложил. Но не работает.   -  person Atul Bhardwaj    schedule 17.05.2012
comment
Так что, если вы ничего не меняли, то имело бы смысл получать неверные данные с сервера, не так ли? Единственное предложение, которое у меня есть, кроме как подождать и попробовать позже, — это очистить данные вашего приложения или удалить и переустановить приложение, если кеш содержит неверный или поврежденный ответ.   -  person dcow    schedule 17.05.2012
comment
В моем случае ничего не работает.   -  person Atul Bhardwaj    schedule 18.05.2012
comment
У меня такая же проблема, и исправьте в этом ответе - › stackoverflow.com/a/19170557/2621050   -  person Bruno Pinto    schedule 04.10.2013


Ответы (5)


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

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

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

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

person Atul Bhardwaj    schedule 13.08.2012
comment
Я проверил это на двух устройствах Motorola и Samsung. Для Motorola я могу получить данные, но для устройства Samsung я все еще не могу это исправить. Вы получили какой-либо другой способ исправить это. - person Anchal; 23.11.2012
comment
@Atul Bhardwaj: я тоже сталкиваюсь с той же проблемой, все еще пытаюсь решить, но безуспешно. - person Nandagopal T; 05.04.2013
comment
Как упомянул Джон, он отлично работает на некоторых устройствах, а не на нескольких устройствах. Через некоторое время / перезагрузка устройства заставляет те же функции работать на устройствах, которых раньше не было. Выглядит очень странно! У кого-нибудь есть способ исправить это? - person Nandagopal T; 05.04.2013

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

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

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

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

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

person Tadas Valaitis    schedule 15.10.2012

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

Settings > Date & Time > Automatic date & time (Use network-provided time)
person uranpro    schedule 21.01.2013

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

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
person iko_wp    schedule 20.03.2013

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

android.permission.WRITE_EXTERNAL_STORAGE

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

person user1859771    schedule 17.02.2014