package googleMap;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.io.*;
import java.util.*;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class queryDistance {
static final String GET_URL
= "https://m...content-available-to-author-only...s.com/maps/api/distancematrix/xml?";
// TODO 自動產生的方法 Stub
// 拼湊get請求的URL字串,使用URLEncoder.encode對特殊和不可見字符進行編碼
String getURL
= GET_URL
+ "origins=" + origin_location
+ "&destinations=" + des_location
+ "&language=zh_TW&sensor=false";
// 根據拼湊的URL,打開連接,URL.openConnection函數會根據URL的類型,
// 返回不同的URLConnection子類的對象,這裏URL是一個http,因此實際返回的是HttpURLConnection
// 進行連接,但是實際上get request要在下一句的connection.getInputStream()函數中才會真正發到
// 服務器
connection.connect();
// 取得輸入流,並使用Reader讀取
System.
out.
println("============================="); System.
out.
println("Contents of get request"); System.
out.
println("============================="); while ((lines = reader.readLine()) != null){
//lines = new String(lines.getBytes(), "utf-8");
}
reader.close();
// 斷開連接
connection.disconnect();
System.
out.
println("============================="); System.
out.
println("Contents of get request ends"); System.
out.
println("=============================");
}
cGFja2FnZSBnb29nbGVNYXA7CgppbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CmltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOwppbXBvcnQgamF2YS5uZXQuSHR0cFVSTENvbm5lY3Rpb247CmltcG9ydCBqYXZhLm5ldC5VUkw7CmltcG9ydCBqYXZhLm5ldC5VUkxFbmNvZGVyOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGlsLio7IAoKaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudDsKaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudEV4Y2VwdGlvbjsKaW1wb3J0IG9yZy5kb200ai5FbGVtZW50OwppbXBvcnQgb3JnLmRvbTRqLmlvLlNBWFJlYWRlcjsKaW1wb3J0IG9yZy5kb200ai5pby5YTUxXcml0ZXI7CgoKcHVibGljIGNsYXNzIHF1ZXJ5RGlzdGFuY2UgewoKCXN0YXRpYyBmaW5hbCBTdHJpbmcgR0VUX1VSTCA9ICJodHRwczovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuY29tL21hcHMvYXBpL2Rpc3RhbmNlbWF0cml4L3htbD8iOyAKCglwdWJsaWMgdm9pZCBxdWVyeShTdHJpbmcgc3RyMSwgU3RyaW5nIHN0cjIpIHRocm93cyBJT0V4Y2VwdGlvbiwgRG9jdW1lbnRFeGNlcHRpb24gewoJCS8vIFRPRE8g6Ieq5YuV55Si55Sf55qE5pa55rOVIFN0dWIKCQkvLyDmi7zmuYpnZXToq4vmsYLnmoRVUkzlrZfkuLLvvIzkvb/nlKhVUkxFbmNvZGVyLmVuY29kZeWwjeeJueauiuWSjOS4jeWPr+imi+Wtl+espumAsuihjOe3qOeivAoJCVN0cmluZyBvcmlnaW5fbG9jYXRpb24gPSBVUkxFbmNvZGVyLmVuY29kZShzdHIxLCAidXRmLTgiKTsKCQlTdHJpbmcgZGVzX2xvY2F0aW9uID0gVVJMRW5jb2Rlci5lbmNvZGUoc3RyMiwgInV0Zi04Iik7CgkJU3RyaW5nIGdldFVSTCA9IEdFVF9VUkwgKyAib3JpZ2lucz0iICsgb3JpZ2luX2xvY2F0aW9uICsgIiZkZXN0aW5hdGlvbnM9IiArIGRlc19sb2NhdGlvbiArICImbGFuZ3VhZ2U9emhfVFcmc2Vuc29yPWZhbHNlIjsKCgkJVVJMIGdldFVybCA9IG5ldyBVUkwoZ2V0VVJMKTsgCgkJLy8g5qC55pOa5ou85rmK55qEVVJM77yM5omT6ZaL6YCj5o6l77yMVVJMLm9wZW5Db25uZWN0aW9u5Ye95pW45pyD5qC55pOaVVJM55qE6aGe5Z6L77yMIAoJCS8vIOi/lOWbnuS4jeWQjOeahFVSTENvbm5lY3Rpb27lrZDpoZ7nmoTlsI3osaHvvIzpgJnoo49VUkzmmK/kuIDlgItodHRw77yM5Zug5q2k5a+m6Zqb6L+U5Zue55qE5pivSHR0cFVSTENvbm5lY3Rpb24gCgkJSHR0cFVSTENvbm5lY3Rpb24gY29ubmVjdGlvbiA9IChIdHRwVVJMQ29ubmVjdGlvbikgZ2V0VXJsLm9wZW5Db25uZWN0aW9uKCk7IAoJCS8vIOmAsuihjOmAo+aOpe+8jOS9huaYr+Wvpumam+S4imdldCByZXF1ZXN06KaB5Zyo5LiL5LiA5Y+l55qEY29ubmVjdGlvbi5nZXRJbnB1dFN0cmVhbSgp5Ye95pW45Lit5omN5pyD55yf5q2j55m85YiwIAoJCS8vIOacjeWLmeWZqCAKCQljb25uZWN0aW9uLmNvbm5lY3QoKTsgCgkJLy8g5Y+W5b6X6Ly45YWl5rWB77yM5Lim5L2/55SoUmVhZGVy6K6A5Y+WIAoJCQoJCUJ1ZmZlcmVkUmVhZGVyIHJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoY29ubmVjdGlvbi5nZXRJbnB1dFN0cmVhbSgpLCJ1dGYtOCIpKTsvL+ioree9rue3qOeivCzlkKbliYfkuK3mlofkuoLnorwgCgkJU3lzdGVtLm91dC5wcmludGxuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOyAKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkNvbnRlbnRzIG9mIGdldCByZXF1ZXN0Iik7IAoJCVN5c3RlbS5vdXQucHJpbnRsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsgCgkJU3RyaW5nIGxpbmVzOyAKCQl3aGlsZSAoKGxpbmVzID0gcmVhZGVyLnJlYWRMaW5lKCkpICE9IG51bGwpeyAKCQkJLy9saW5lcyA9IG5ldyBTdHJpbmcobGluZXMuZ2V0Qnl0ZXMoKSwgInV0Zi04Iik7IAoJCQlTeXN0ZW0ub3V0LnByaW50bG4obGluZXMpOyAKCQl9IAoJCXJlYWRlci5jbG9zZSgpOyAKCQkvLyDmlrfplovpgKPmjqUgCgkJY29ubmVjdGlvbi5kaXNjb25uZWN0KCk7IAoJCVN5c3RlbS5vdXQucHJpbnRsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsgCgkJU3lzdGVtLm91dC5wcmludGxuKCJDb250ZW50cyBvZiBnZXQgcmVxdWVzdCBlbmRzIik7IAoJCVN5c3RlbS5vdXQucHJpbnRsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKCQoJfQ==