【问题标题】:IOException when using gocoder: Timed out waiting for response from server使用 gocoder 时出现 IOException:等待服务器响应超时
【发布时间】:2016-04-03 20:24:20
【问题描述】:

我一直在开发 Android 应用程序,它使用 Google 的地理编码器将不同的纬度和经度转换为人类可读的地址,但就在几分钟前,我收到了一个 IOException,并显示以下消息“等待服务器响应超时”。还有其他人面临同样的问题吗?我知道今年 1 月,geocoder API 也出现了类似问题,是 Google 的问题。

几个月来,我没有更改与应用程序中地理编码器使用相关的任何内容。

我按预期使用地理编码器:

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); List addresses = geocoder.getFromLocation(latitude, longitude, 1);

而且我的清单中有正确的权限:

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

这是我得到的完整堆栈跟踪:

04-03 22:55:51.788 19955-19955/com.tek3.thanksfrog W/System.err: java.io.IOException: Timed out waiting for response from server
04-03 22:55:51.798 19955-19955/com.tek3.thanksfrog W/System.err:     at android.location.Geocoder.getFromLocation(Geocoder.java:136)
04-03 22:55:51.798 19955-19955/com.tek3.thanksfrog W/System.err:     at com.tek3.thanksfrong.AppController.getLocationInfoFromLatLng(AppController.java:687)
04-03 22:55:51.798 19955-19955/com.tek3.thanksfrog W/System.err:     at com.tek3.thanksfrong.fragments.NewSceneFragment.loadCurrentLocationAddress(NewSceneFragment.java:268)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at com.tek3.thanksfrong.fragments.NewSceneFragment.onResume(NewSceneFragment.java:247)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.Fragment.performResume(Fragment.java:1832)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:995)
04-03 22:55:51.808 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.os.Handler.handleCallback(Handler.java:725)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:92)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.os.Looper.loop(Looper.java:176)
04-03 22:55:51.818 19955-19955/com.tek3.thanksfrog W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5317)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-03 22:55:51.828 19955-19955/com.tek3.thanksfrog W/System.err:     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 我已经看过其他帖子,其中提到 Geocoder 无法正常运行,尽管它在早些时候(几小时/几天前)确实如此。我去了公共票 - code.google.com/p/gmaps-api-issues/issues/detail?id=9153 - 这是去年 1 月发生这种情况时制作的,现在似乎还有其他人正在经历这种情况。您确实提到您没有修改代码中的任何内容,对吧?
  • 正确!我没有改变任何东西。问题似乎已解决。它再次按预期工作。

标签: android google-maps google-geocoder


【解决方案1】:

首先,这取决于您使用的 Android 版本。比如在API 23中,你需要检查权限是否有权限使用位置权限?

我的第二点是:您是否检查您的位置(纬度和经度)是否不为空。因为如果您使用位置管理器,有时位置为空,因为 GPS 比网络慢,或者因为网络和 GPS 不可用。

但我不确定我的最后一点,但要使用 Google 的地理编码器,您不需要 API 密钥吗?或者也许我只是混合了所有东西

【讨论】:

  • 我正在使用 API 21。另外,我已经检查过传递给 geocoder.getFromLocation() 调用的纬度和经度都不为空。
  • 职位呢?你检查这个位置是否为空?
  • 你用模拟器吗?我可能是个问题。如果可以,你可以试试真机吗?
  • 看来你不是唯一一个有问题的人:stackoverflow.com/questions/36390518/…
  • 昨天我尝试了 3 种不同的设备,但我遇到了同样的错误。这个问题现在似乎已经解决了。它再次按预期工作。
猜你喜欢
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
  • 2020-12-30
  • 1970-01-01
  • 2013-10-25
相关资源
最近更新 更多