Charles是mac端的网络代理工具,利用它可以直接查看一个请求的方方面面,包括请求的url,cookie,参数,返回的结果,请求完成时间等。更高级一些的用法,包括网络请求的转发,请求的映射,修改请求参数等。
先睹为快

一旦手机连上charles的代理,那么app的http请求都会通过charles进行代理,那么在这里也就能够很方便的看到每一个请求的请求参数和返回结果啦。
如何连接charles
打开charles,选择Proxy->Proxy Settings

打开手机的WLAN设置,找到代理设置(Android一般都是长按当前已经连接的wifi,iOS进入无线局域网设置,在最下面有一个HTTP代理手动设置的入口)
Android的代理服务器设置:

iOS的代理服务器设置:

设置Map Remote
客户端开发一般都会有多套环境,比如线上环境,测试环境等,那么怎么快速的实现环境的切换呢?这里就需要用到charles提供的Map Remote功能。
先来张效果图

这样就完成请求映射到测试环境下,实现了自动切换网络环境到线下。
如何设置Map Remote呢?
点击Map Remote Settings下的Add按钮,添加一个Map Remote。

按照上图填好你需要的设置,charles就可以帮你完成Map Remote的事情啦。
设置Map Local
ok,上面我们简单介绍了Map remote的功能,能方便的映射请求的服务器地址,那么如果我想把请求映射到本地的文件该怎么办呢?
这里引申出来一个问题,什么时候需要把请求映射到本地呢?
举个栗子:一般和后端rd共同开发项目的时候,首先是共同约定好请求的参数和返回的数据格式,这时候Map Local就可以派上用场了,你可以自己mock后端返回的数据格式,然后通过Map Local将请求映射到本地的文件,这样就将开发和后端解耦了。等后端的接口准备好,再来联调简直太easy。
当然还有更多的使用场景,大家用熟之后就慢慢理解了。
先来张效果图

设置Map Local

这里需要主要的是,host和port我都使用了*来代替,它表示可以为任意值。
那么这样我们就完成了Map Local的设置啦,所有在本地文件hotfix.json的修改,都会在请求中生效。
修改请求
有时候会有修改一下请求的参数,然后看看返回的结果有啥区别,这样的情况在开发的时候肯定很多。那么如何利用charles来快速修改请求的参数呢?
先来张效果图

修改请求

当你完成修改之后,点击Execute,就会去请求修改后的request,非常的方便。
总结
上面所说的只是charles的一些主要功能,当然远不止这些,需要大家慢慢去熟悉。
windows下有charles,但还有一个比较好用的网络代理工具fiddler,基本上charles有的功能它都有,大家有兴趣可以研究一下。
这里提供一个下载的安装包:
链接: pan.baidu.com/s/1ct50eU 密码: m1bw
直接解压之后就可以使用。