1. 程式人生 > >遇到的問題----騰訊qq地圖系統異常

遇到的問題----騰訊qq地圖系統異常

我在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");

後 請求成功