真機測試時,在進行解析Apache service上的xml文件的時候遇到了網絡連接的錯誤
(1)一開始寫的url是URL url = new URL("http://192.168.1.101/get_data.xml");
報錯:java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 3229) after 6000ms: isConnected failed: ECONNREFUSED (Connection refused)
原因是因為Android模擬器本身把自己當做了localhost或127.0.0.1,而此時我們又通過localhost或127.0.0.1訪問本地服務器,所以會拋出異常了。解決方法:可以用10.0.2.2代替127.0.0.1和localhost;
(2)然后我把URL改成了URL url =
new URL("http://10.0.2.2/get_data.xml");
報錯:java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect failed: ETIMEDOUT (Connection timed out)
原因是:
1. http://127.0.0.1:8088/jsonProject/images/picture.png
2. http://localhost:8088/jsonProject/images/picture.png
3. http://192.168.0.100/jsonProject/images/picture.png(IP地址略有改動)
以上三種URL在聯網時都可以通過瀏覽器訪問到picture.png這張圖片。仔細 觀察不難發現,不同之處在於紅色字體的部分,第1和第2個URL是本地訪問方式,也就是說前兩種訪問方式不需要通過網絡。第三種URL需要聯網才能正常訪 問,也就是說只要你的服務器開着,任何人都可以通過網絡使用該URL訪問到picture.png這一資源。使用真機測試時,你的真機也就相當於脫離於你 的pc之外的另外一設備,所以說當你需要連接到服務器時只能使用第三種URL方式。即你需要使用你的真實IP地址。(真實ip地址查看方式:在命令行窗口 輸入:ipconfig即可查看你的IPv4地址)。
