## 訪問本地服務器
本節介紹如何在安卓設備上訪問工作機本地起的web服務頁面。
* 通過端口映射,可以在安卓設備上訪問工作機上本地服務的頁面
* 如果工作機上的web服務使用了自定義域名,可以通過自定義域名映射,讓安卓設備訪問
### 端口映射
端口映射通過在安卓設備上創建一個監聽TCP端口,把它映射到工作機上相應web服務的TCP端口,便能夠在安卓設備上通過USB連接直接訪問工作機上的web服務頁面,而不依賴于網絡配置。
例如,我們在工作機本地有一個web服務如下圖所示,在工作機上使用localhost訪問正常。此時,我們想在安卓設備上訪問此web頁面。直接在安卓設備上使用``localhost:8000/index.html``肯定訪問不了。這時我們就需要設置端口映射。

在上一節中講的設備檢查頁面,找到如下圖所示的**端口映射**摁鈕。

點擊后,會出現如下圖所示的彈窗,左側的Port輸入框填入安卓設備上監聽的端口(可以和工作機上端口一致,視端口被占用情況而定),例如,你想在安卓設備上通過訪問``localhost:5000/index.html``來訪問工作機上的web服務頁面,那么就填5000。此處,我保持跟工作機一致,使用8000端口。右側填寫工作機的主機名和端口號。最后勾上開啟端口映射,點擊完成。

配置好的,但可以在安卓設備通過``localhost:5000/index.html``來訪問了,我們在如下紅色框中輸入``localhost:5000/index.html``,點擊**打開**,打開后,在打開列表中便能看到,此時就可以用上一節介紹的方法調試此頁面了。

### 虛擬主機映射
當在 localhost 域名上進行開發的時候,端口轉發非常有效。但是有些情況下可能需要是使用自定義的本地域名。
例如,假設你正在使用的第三方 JavaScript SDk 只有在白名單上的域名中才能運行,或者安全認證系統只允許在特定域名下登錄等等情況。此時需要在hosts文件中加入一個進入點,比如 127.0.0.1 callcenter1.ysf.space。然后開啟代理服務器后,我們便能通過代理方式,調試本地的js代碼。
如下圖所示:url:`callcenter1.ysf.space:8002/login`

接下來,我們想在安卓設備上訪問該頁面,并進行調試。如下圖所示,根據前一節介紹的方法我們設置工作機的web服務和安卓設備之間的端口映射。 為了后面我們設置網絡代理更加清晰,此時我們把端口設置成不一樣,使用8008作為安卓設備監聽的端口號。

設置完成后,我們可以在安卓設備上通過url:`localhost:8008/login`訪問,如下圖所示

但是,由于安全認證的原因,登陸必須在`callcenter1.ysf.space`域名下才可以,我們需要在安卓設備上也通過`callcenter1.ysf.space:8002/login`訪問進行調試。于是,**我們需要設置安卓設備的網絡連接,將所有網絡請求均代理到工作機的8002端口**,步驟如下:
1. 打開安卓設備的**設置**>**WLAN**
2. 長按當前連接的網絡,彈出選項對話框
3. 選擇**修改網絡**
4. 勾選**高級**
5. **代理模式**設置為**手動**
6. **代理主機**機設置為localhost
7. **代理端口**,輸入上面我們設置端口映射時輸入的8008
8. 點擊**保存**
通過這些設置,安卓設備會將它所有的請求都發給工作機上的代理服務器。該代理代表安卓設備發出請求,故而在工作機上會對安卓設備上發出的本地特定域名的請求進行合理地解析。

現在便可以跟在工作機上一樣使用`callcenter1.ysf.space:8002/login`訪問,并且能夠正確進行登陸,如上圖所示。需要特別注意的是,當調試結束后,請按照設備代理介紹的方法,將網絡的代理設置關閉,才能進行正常的上網。