如何监控Android模拟器的HTTP访问情况

如何监控Android模拟器的HTTP访问情况,第1张

实施过程:

按照文档的指导,在启动模拟器时,使用 -http-proxy参数,设置127.0.0.1:8888为模拟器的上网代理,结果失败。Fiddler2没有抓到通讯应答。

上网搜索,许多文章或帖子(包括英文的和中文的)都说要修改模拟器的系统设置数据库,添加一条HTTP_PROXY的记录。尝试后失败。

解决方案:

再细读文档中有关模拟器的部分,看到Network Address Space一段,忽有所悟。这段文字是这么写的——

Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine’s network interfaces and settings and from the internet. An emulated device can not see your development machine or other emulator instances on the network. Instead, it sees only that it is connected through Ethernet to a router/firewall.

(译文)模拟器在虚拟路由器/防火墙服务后面运行,这套路由器/防火墙服务隔离于开发机的网络界面、设置,也与互联网相隔离。模拟设备不能访问开发机或网络上的其他模拟器。它看到的只是自己通过以太网连接到一个路由器/防火墙。

这下清楚了,模拟器压根不知道127.0.0.1是个啥地址,也压根访问不到。在127.0.0.1上设置的代理,自然也抓不到任何通讯应答了。

文档接着写道,这个虚拟防火墙/路由器管理从10.0.2.2至10.0.2.24,模拟器的IP地址是10.0.2.15,而模拟器看到的开发机地址则

是10.0.2.2。也就是说,从模拟器的角度看,Fiddler2是在10.0.2.2上运行的。

于是用emulator命令加上avd -http-proxy 10.0.2.2:8888参数启动模拟器,在模拟器上运行browser,访问任何web地址,可以看到,Fiddler2抓到了HTTP通讯。

在自己的应用程序中打开创建HttpURLConnection,访问同一网址(下面只是创建连接的代码,访问代码略):

private HttpURLConnection createConnection(URL url)

{

HttpURLConnection conn=null

try

{

conn=(HttpURLConnection)url.openConnection()

}

catch (IOException e)

{

e.printStackTrace()

}

return conn

}

这次Fiddler2没能抓到通讯。但应用程序访问网页是成功的。只在启动模拟器时加上-http-proxy参数还不够,应用程序创建连接时,也要指定HTTP代理才行:

private HttpURLConnection createConnectionWithProxy(URL url, String proxyAddress, int proxyPort)

{

HttpURLConnection conn = null

Proxy proxy=new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyAddress,proxyPort))

try {

conn = (HttpURLConnection) url.openConnection(proxy)

} catch (IOException e) {

e.printStackTrace()

}

return conn

}

调用上述方法,传入代理地址10.0.2.2和端口8888,再次运行应用程序,这次可以了(截图和上图大同小异,略)。

开发者可以从http响应时间、http错误率、请求量(rpm)和Data I/O四个维度监控http请求,并监测每个url的运营商、终端设备、错误码。同时,地理定位功能可以提供每个地区网络状况的平均值,方便开发者去分析和优化。

http响应时间

通过响应时间的长短,可以判断哪个url去优化,如果响应时间长,是不是后台查询过慢?还是因为运营商基站建的少网络信号差?

http错误率

通过错误率,可以知道访问某个url时最多的错误码是多少,根据错误码去确定是请求错误还是服务器错误,从而缩小问题的查找范围。

请求量(rpm)

通过查看url的请求量,可以去推断用户的喜好,从而做一些定制化的服务,也可以通过这个指标去确定App端发请求频率是否正常。

Data I/O

通过Data I/O,可以知道某个url的请求数据大小是否正常,是否流量过大可以进行压缩从而节省用户的费用。

使用抓包软件Wireshark即可

打开Wireshark并开始抓包

打开Chrome

此时所有的经过Chrome都将在Wireshark中显示

在Wireshark中的Filter框中输入http以过滤包信息

过滤结果即为所有Chrome的HTTP请求


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/11621763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存