遇到的問題----騰訊qq地圖系統異常
阿新 • • 發佈:2019-01-05
我在java中用以下方法呼叫qq地圖的webservice服務 解析地址
URL resjson = new URL("http://apis.map.qq.com/ws/geocoder/v1/?region=" + city + "&address=" + address + "&key=" + QQkey); BufferedReader in = new BufferedReader(new InputStreamReader( resjson.openStream(), "utf-8")); String res; StringBuilder sb = new StringBuilder(""); while ((res = in.readLine()) != null) { sb.append(res.trim()); } in.close(); String str = sb.toString(); System.out.println("return json:" + str); if (str != null && !str.equals("")) { HashMap<String, String> map = null; int lngStart = str.indexOf("lng\":"); int lngEnd = str.indexOf(",\"lat"); int latEnd = str.indexOf("},\"address_components"); if (lngStart > 0 && lngEnd > 0 && latEnd > 0) { String lng = str.substring(lngStart + 5, lngEnd); String lat = str.substring(lngEnd + 7, latEnd); map = new HashMap<String, String>(); map.put("lng", lng.replaceAll("\"", "")); map.put("lat", lat.replaceAll("\"", "")); return map; } }
結果返回的是{status:-1,message:系統異常}
結果發現是 請求連結的編碼問題
加上
// 將地址轉換成utf-8的16進位制
address = URLEncoder.encode(address, "UTF-8");
city = URLEncoder.encode(city, "UTF-8");
// 如果有代理,要設定代理,沒代理可註釋
// System.setProperty("http.proxyHost","192.168.172.23");
// System.setProperty("http.proxyPort","3209");
後 請求成功