【问题标题】:java io ioexception unable to parse response from server geocoderjava io ioexception 无法解析来自服务器地理编码器的响应
【发布时间】:2012-05-25 08:41:12
【问题描述】:

我正在使用此代码获取地理地址:

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:网络状态改变了,你没有得到服务器的响应。或者,2:您更改了破坏代码的内容。你为什么不回去确保从它工作到现在你没有改变任何东西。如果一切正常,请确保您可以通过其他方式实际访问网络上的服务器。如果您仍然遇到问题,请向我们展示您的代码和 Logcat (=
  • 之前和现在的代码100%相同
  • 那么你做了我建议的其他事情吗?
  • 因此,如果您没有更改任何内容,那么您从服务器获取错误数据是有道理的,不是吗?除了等待稍后再试之外,我唯一的建议是清除应用程序的数据或卸载并重新安装应用程序,以防缓存包含错误或损坏的响应。
  • 我有同样的问题,并在这个答案中修复 -> stackoverflow.com/a/19170557/2621050

标签: java android geolocation gps locationlistener


【解决方案1】:

我遇到了同样的问题。 我添加了这个权限

android.permission.WRITE_EXTERNAL_STORAGE

而且效果很好。

【讨论】:

    【解决方案2】:

    我的问题原因是没有地理编码器的适当权限

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

    【讨论】:

      【解决方案3】:

      我的解决方案是:

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

      【讨论】:

        【解决方案4】:

        我的三星 Galaxy Tab 10.1 遇到了同样的问题。我在几个小时内寻找解决方案,但没有任何帮助。要解决问题,请尝试以下操作:

        进入位置设置并启用:

        1.使用无线网络 2.使用GPS卫星

        等待 GPS 定位修复

        此后,地理编码器服务器响应。即使我禁用了无线和 GPS 定位,服务器仍在工作。我认为只有在您与 Google 共享您的位置时才能使用地理编码器。

        【讨论】:

          【解决方案5】:

          终于解决了我的问题。

          如果您尝试非常频繁地(一分钟内多次)访问服务器以从 lat,long 获取地址,那么您可能会遇到此异常。此问题的解决方案可以是:

          1-请尽量避免在一分钟内多次点击地址。
          2-在不同的设备上运行此代码。

          如果您想在同一设备上运行此代码,请清除您的应用数据(或卸载您的应用)并等待一段时间。

          【讨论】:

          • 我已经在摩托罗拉和三星两台设备上测试过了。对于摩托罗拉,我能够获取数据,但对于三星设备,我仍然无法修复它。你有没有其他方法来解决这个问题。
          • @Atul Bhardwaj :我也面临同样的问题,仍在尝试解决但没有运气。
          • 正如约翰所提到的,它在某些设备上运行良好,而不是在少数设备上。经过一段时间/重新启动设备后,相同的功能可以在以前没有的设备上运行。看起来很奇怪!。有人有办法解决这个问题吗?
          猜你喜欢
          • 1970-01-01
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-26
          • 2013-08-05
          相关资源
          最近更新 更多