import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Test { /* * Java http 请求 */ public static String loadJson (String url) { StringBuilder json = new StringBuilder(); try { //下面那条URL请求返回结果无中文,可不转换编码格式 URL urlObject = new URL(url); URLConnection uc = urlObject.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream())); String inputLine = null; while ( (inputLine = in.readLine()) != null) { json.append(inputLine); } in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return json.toString(); } /* * 高德地图WebAPI : 行驶距离测量 */ public static String distance(String origins,String destination) { int type = 1; String url = "http://restapi.amap.com/v3/distance?" + "origins="+origins +"&destination="+destination +"&type="+type +"&key=你申请的key"; JSONObject jsonobject = JSONObject.fromObject(loadJson(url)); System.out.println(jsonobject.toString()); JSONArray resultsArray = jsonobject.getJSONArray("results"); JSONObject distanceObject = resultsArray.getJSONObject(0); String distance = distanceObject.getString("distance"); return distance; } public static void main(String[] args) { //格式: 经度,纬度 //注意:高德最多取小数点后六位 String origin = "116.398140"+","+"26.059369"; String destination = "116.374028"+","+"39.907586"; String distance = distance(origin, destination); System.out.println(distance); }
附:返回的Json结果
{ "infocode": "10000", "results": [ { "duration": "78900", "distance": "1809936", "origin_id": "1", "dest_id": "1" } ], "status": "1", "info": "OK" }