1. 程式人生 > >使用android真機測試http網路連線異常解決辦法

使用android真機測試http網路連線異常解決辦法

最近在學校android網路程式設計之json解析時遇到不少問題,其中之一是在使用http協議連線網路時總是出錯,搗鼓了將近兩天,終於略有所悟,現記錄如下。

一 、問題描述

首先我是在本地tomcat伺服器上部署一個web專案,通過web專案的servlet完成對客戶端連線請求的操作。其他都很順利,在電腦瀏覽器上輸入URL訪問正常,在eclipse上建立Java專案也能正常訪問。但是一旦放在android專案中,就出現錯誤了,丟擲異常資訊為:failed to connect to localhost/127.0.0.1 (port 80) after 90000ms: isConnected failed: ECONNREFUSED ,由於經驗欠缺不能一下看出錯誤所在。我就笨笨的通過Log語句一句一句的測試,好在通過不斷摸把錯誤定位到【int code = connection.getResponseCode();】這句話上,每當執行到該處時就會丟擲異常。搜尋了一下【為何使用getResponseCode()方法會丟擲異常?】,基本上大部分答案都指向【android網路連線不能在主執行緒上進行,需要另啟執行緒】這一知識點上。開了多執行緒以後,問題依舊。

二、解決辦法

經過不斷地摸索嘗試,就在剛才終於測試成功了。原來問題出在我的URL上。我們在本地配置tomcat伺服器時,有三種訪問方式都可以通過瀏覽器連線到伺服器上,下面我就以我本地伺服器為例給出三種形式的URL:

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地址)。

三、其他

由於知識面較為狹窄,伺服器方面更是剛剛接觸,所以有許多描述可能不是太為準確或者貼切。希望大家發現該篇文章有不妥的地方能夠提出,我會虛心受教,共同學習。

-----2015年5月3日01:15:22

-----寫於宿舍