【发布时间】:2014-11-10 13:49:04
【问题描述】:
我正在尝试从 Java 客户端访问 HTTP GET:
public String getStreetAddressFromGeometry(String eventX, String eventY) {
String streetName = "";
try {
URL url = new URL("http://www.onemap.sg/API/services.svc/revgeocode?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr&location='"+eventX+"','"+eventY+"'");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String responseString;
while ((responseString = br.readLine()) != null) {
try {
JSONObject rawObj = new JSONObject(responseString);
JSONArray searchResults = rawObj.getJSONArray("GeocodeInfo");
for (int i = 0; i < searchResults.length(); i++) {
if(searchResults.getJSONObject(i).getString("BLOCK").equals("")){
streetName = searchResults.getJSONObject(i).getString("ROAD");
}else if (!searchResults.getJSONObject(i).getString("BLOCK").equals("")){
streetName = searchResults.getJSONObject(i).getString(
"BLOCK")
+ " "
+ searchResults.getJSONObject(i).getString("ROAD")
+ " SINGAPORE "
+ searchResults.getJSONObject(i).getString(
"POSTALCODE");
}
}
} catch (Exception ex) {
return "Error";
}
}
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return streetName;
}
}
我正在反向地理编码下调用一个地图 API here。我用我现在的当前坐标尝试了 URL,它在测试 URL 上运行良好。
但是当我将它放入我的代码并打印出返回的地址时。它没有显示地址,只是声明“错误”,没有解释或错误消息。
不知道我做错了哪一部分?
提前致谢。
【问题讨论】:
-
让选民失望解释我做错了哪一部分?
-
您能告诉我们该服务的有效网址吗?
-
那个 url 给了我 {"GeocodeInfo":[{"ErrorMessage":"Invalid Token"}]}
-
它在我这边工作得很好
标签: java web-services http get