一濒翻、網(wǎng)速模擬
點(diǎn)擊菜單“Proxy→ Throtte Setting”打開網(wǎng)速模擬配置窗口。
配置含義:
Bandwidth(帶寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(字節(jié))
二、Map功能
Charles 的 Map 功能分 Map Remote 和 Map Local 兩種,顧名思義旦棉,Map Remote 是將指定的網(wǎng)絡(luò)請求重定向到另一個網(wǎng)址請求地址真屯,Map Local 是將指定的網(wǎng)絡(luò)請求重定向到本地文件泵额。
在 Charles 的菜單中,選擇 “Tools”–>“Map Remote” 或 “Map Local” 即可進(jìn)入到相應(yīng)功能的設(shè)置頁面。
對于 Map Remote 功能,我們需要分別填寫網(wǎng)絡(luò)重定向的源地址和目的地址,對于不需要限制的條件,可以留空。下圖是一個示例,我將所有ytk1.yuanku.ws(測試服務(wù)器)的請求重定向到了www.yuantiku.com(線上服務(wù)器)。
對于 Map Local 功能伏尼,我們需要填寫的重定向的源地址和本地的目標(biāo)文件代赁。對于有一些復(fù)雜的網(wǎng)絡(luò)請求結(jié)果徒役,我們可以先使用 Charles 提供的 “Save Response…” 功能,將請求結(jié)果保存到本地(如下圖所示),然后稍加修改,成為我們的目標(biāo)映射文件呕乎。
下圖是一個示例聋溜,我將一個指定的網(wǎng)絡(luò)請求通過 Map Local 功能映射到了本地的一個經(jīng)過修改的文件中。
三注盈、Rewrite功能
Rewrite 功能功能適合對某一類網(wǎng)絡(luò)請求進(jìn)行一些正則替換,以達(dá)到修改結(jié)果的目的。
例如击罪,我們的客戶端有一個 API 請求是獲得用戶昵稱画切,而我當(dāng)前的昵稱是 “tangqiaoboy”庞萍,如下所示:
我們想試著直接修改網(wǎng)絡(luò)返回值疫衩,將 tangqiaoboy 換成成 iosboy。于是我們啟用 Rewrite 功能宁否,然后設(shè)置如下的規(guī)則:
完成設(shè)置之后冤寿,我們就可以從 Charles 中看到督怜,之后的 API 獲得的昵稱被自動 Rewrite 成了 iosboy号杠,如下圖所示:
四悠砚、Breakpoints功能
上面提供的 Rewrite 功能最適合做批量和長期的替換,但是很多時候讳窟,我們只是想臨時修改一次網(wǎng)絡(luò)請求結(jié)果,這個時候蜂林,使用 Rewrite 功能雖然也可以達(dá)到目的遥诉,但是過于麻煩,對于臨時性的修改噪叙,我們最好使用 Breakpoints 功能矮锈。
Breakpoints 功能類似我們在 Xcode 中設(shè)置的斷點(diǎn)一樣,當(dāng)指定的網(wǎng)絡(luò)請求發(fā)生時睁蕾,Charles 會截獲該請求苞笨,這個時候,我們可以在 Charles 中臨時修改網(wǎng)絡(luò)請求的返回內(nèi)容子眶。
下圖是我們臨時修改獲取用戶信息的 API瀑凝,將用戶的昵稱進(jìn)行了更改,修改完成后點(diǎn)擊 “Execute” 則可以讓網(wǎng)絡(luò)請求繼續(xù)進(jìn)行臭杰。
需要注意的是粤咪,使用 Breakpoints 功能將網(wǎng)絡(luò)請求截獲并修改過程中,整個網(wǎng)絡(luò)請求的計時并不會暫停硅卢,所以長時間的暫蜕渲希可能導(dǎo)致客戶端的請求超時。