#三类工具
· Network Profiler · 抓包工具 · Stetho
#Network Profiler
- AS自带的工具; 显示实时网络活动:发送、接收数据及连接数等等, 详情见下文;
- 需要手动启用高级分析
- 只支持
HttpURLConnection和OkHttp网络库
主动启动高级分析
运行项目WebViewTest,
打开Profiler:
进行一次网络请求,
点击NetWork栏目,
选择一段时间段(类似于内存优化时候做的操作),
可以看到对应的信息:
双击信息项,可以在右侧弹出详细的信息,
包括请求的资源、请求的方式、请求的文件类型、大小、接口URL等等
还能看到调用栈:
#抓包工具
- Charles 是使用Java开发的,跨平台、mac使用得比较多;
- Fiddler Window使用的比较多;
- Wireshark
- TcpDump
###Charles **[官网以及下载地址](https://www.charlesproxy.com/latest-release/download.do)** - **断点功能** - **Map Local** - **弱网环境模拟**  **打开Charles,清掉缓存:  发送一个请求: 可以看到Charles抓到的信息其实是非常全面的: 概述:内容:还有其他一些具体的栏目就不细说了;**
###断点功能 >**用于`拦截`Request或者Response, `整改`请求或者返回的数据(数据内容或者格式等), 更方便地`查看`请求或者返回的`数据`以及详细的`网络交互信息` !!!**
选中要打断点的URL,右键,选择Breakpoints:
选择顶栏的Proxy中的Breakpoint Settings:
可以看到刚刚打了断点的URL,
双击一下Breakpoint Settings窗口中的URL,底下可以配置Request和Response的断点,这里先测试Response的,然后两个窗口都点击OK:
接着再一次对这个打了断点的URL进行请求,
发现会被拦截了,
并且Charles会弹出来这么一个窗口,我们选择Edit Response:
下方的栏目可以选择不同的格式对返回结果进行展示:
修改一下内容,
然后点击右下角的Execute按钮,
可以释放断点,把拦截的Response“放生”:
可以看到刚刚被拦截的浏览器请求就收到数据了,
并且是我们修改后的数据:
####这便是所谓的断点与拦截!
另外,我们还能利用断点更改Response文件的内容格式(Content-Type: ),
比如,如果文件格式不对,我们可以通过断点的Edit Response中,
对Headers进行整改:改成
Content-Type: application/json之后,
可以发现多了JSON相关的显示选择栏可以选:
####如此通过抓包的方式来查看Response数据,可以方便很多
###Map Local
比较多的使用于
服务端的接口还没有Ready, 只是定了一个协议的情况; 此时使用Map Local,可以不影响客户端的开发进度, 客户端可以通过Map Local自己模拟的一个假数据的接口去测试, 同时也可以进行补充的测试;
对刚刚那个接口取消断点,
(实战中需要对要模拟的接口)点击MapLocal:
选择
本地的模拟数据:
再次请求这个接口URL的时候,
客户端就不会再走
网络途径去URL对应的资源请求了,
而是走本地路径,也就是刚刚我们在Map To中设置的模拟数据!!!
如图所示,接口请求返回的不再是
服务端的数据了,
而是刚刚我们自己准备好的模拟数据、我们设定好本地的数据路径!!!
其实就是类似于Apache的一个功能;
###弱网环境模拟 **先通过顶栏去掉接口的`MapLocal功能`;把Enable去掉: 开始软网模拟, 点击顶栏的`Throttle Settings`:【Throttle 节流阀】 进入一个配置窗口: 可以选择一个弱网模式去进行模拟测试, 然后观察对应弱网模式下,某个网络请求的进行情况,如时延、DNS解析耗时等等;**
#Stetho
- 强大的应用调试桥,连接Android和Chrome;
- 网络监控、视图查看、数据库查看、命令行扩展等;
引入库:
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'
参考:
- 慕课网