修改服务器返回内容

有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。

例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。

如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。 这个时候,使用 Charles 相关的功能就可以满足我们的需求。

根据具体的需求,Charles 提供了 1. Map 功能 2. Rewrite 功能 3. Breakpoints 功能

都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:

  • Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
  • Rewrite 功能适合对网络请求进行一些正则替换。
  • Breakpoints 功能适合做一些临时性的修改。

8.Map 重定向功能

CharlesMap 功能分 Map RemoteMap Local 两种

顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址 Map Local 是将指定的网络请求重定向到本地文件。

  • Charles 的菜单中,选择 Tools->Map RemoteMap Local 即可进入到相应功能的设置页面。

  • 对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。

9.Rewrite 功能

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

10.Breakpoints 功能

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的

但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

下图是我们临时修改获取用户信息的 API,将用户的昵称进行了更改,修改完成后点击 “Execute” 则可以让网络请求继续进行。

按照上边设置好以后,再次访问接口将会有断点提示,进入编辑返回的内容即可(我在运用时很奇怪,设置成功后,得退出一次charles程序,再启动才会有断点界面)