问题:
java.io.IOException: Unable to parse response from server at android.location.Geocoder.getFromLocation(Geocoder.java:136)
首先,这个不是必现的,
12-26 11:48:38.030 4457 4469 I TestRunner: passed: testGetFromLocation(android.location.cts.GeocoderTest)
12-26 11:48:38.205 4457 4469 I TestRunner: passed: testGetFromLocationName(android.location.cts.GeocoderTest)
12-26 11:51:03.520 5726 5738 I TestRunner: failed: testGetFromLocation(android.location.cts.GeocoderTest)
12-26 11:51:08.555 5726 5738 I TestRunner: failed: testGetFromLocationName(android.location.cts.GeocoderTest)
一次成功一次失败。
分析TCP网络数据包发现,
11:48:38及之前,数据包来回正常;
11:48:58之后,只有数据发送、没有数据应答,且出现连续Retransmission重发。如附图
其中10.5.27.84是手机本端,74.125.128.104是服务端——谷歌的GEOCODE服务器。
这个的原因可能是当时网络异常(没有送达服务器、或者服务器的ACK不能返回到手机),或者服务器异常(服务器不响应请求)。
推测,后者的可能性比较大。原因是服务器端不认为第一次请求连接结束了,所以不响应第二次GEOCODE服务请求,需要手机端主动断开结束或者等待一段时间服务器端超时自动结束。
这个项服务在谷歌就是这么设计的,不要短时间连续测试GEOCODE就不会有这个问题。
个人认为可以关闭。