先于服务器端的Android开发,基于mock和fiddler(win)和whistle(linux)

来源:互联网 发布:淘宝神经猫 编辑:程序博客网 时间:2024/06/04 00:53

最近公司项目大重构,由于服务端接口全部规范重写所以进度较慢,与其浪费时间等待接口完成不如自己先根据服务端定义好的文档生成模拟的json数据来继续开发,最后等到服务端接口完成的时候做下联调,做到较高的开发效率

PS:更新linux平台下的代理转发工具Whistle安装和使用方法:

工具介绍

需要用到的工具:
(1)http://www.mocky.io/
该网站是用来mock http响应的,使用该网站可以生成一个模拟的json响应链接,使用get或者put方式就能获取模拟的json数据
(2)Fiddler 4
在windows平台下将上面网站生成的json响应链接转发为服务器端接口域名
(3)Whistle
将linux平台下来将上面网站生成的json响应链接转发为服务器端接口域名,使用流程和Fiddler相同,具体安装使用方法看最下面

具体流程

1.生成mock接口

下面介绍下具体的mock流程
比如服务端有个接口,接口地址是
test.mycompany.com:8080/api/user/userInfo
返回的json数据是:

{    "code": 1,    "errorMsg": "",    "resultData": {        "uid": 1,        "nickname": "鲁提辖",        "sex": 1,        "region": "拉科鲁尼亚",        "sign": "今天心情不错",        "headImage": "http://"    }}

我们先可以用http://www.mocky.io/网站来生成一个模拟的json响应链接
这里写图片描述
然后点击蓝色按钮,在上图绿色位置会生成一个链接,点击进入后如下图
这里写图片描述
这样我们的模拟接口已经完成了,用postman测试一下看看
这里写图片描述
模拟接口确实完成了,数据确实也有了,但是我们的接口地址明明是test.mycompany.com:8080/api/user/userInfo,难道还要在客户端代码里把接口地址也改成http://www.mocky.io/v2/58285d220f0000851241002e吗?

2.设置fiddler域名转发

所以我们就需要用到Fiddler 4的域名转发功能了
按照下图设置域名转发规则,设置完记得点击save

这里写图片描述

点击Fiddler菜单项Tools->Telerik Fiddler Options

这里写图片描述

选中https内的decrypt https traffic和ignore server certificate errors两项

这里写图片描述

选中connections内的allow remote computers to connect,默认监听端口为8888,若被占用也可以设置成其他端口

这里写图片描述

3.调试mock接口

设置完fiddler后我们就可以在虚拟机内使用我们的模拟接口了,这里提供两种方法

(第一种方法)推荐:在mock接口的http请求代码中加入代理参数,该方法不影响其他正常接口。,fiddler设置了8888端口就使用该端口,whistle默认使用8899端口
以okhttp为例

OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();httpClientBuilder.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.2.2", 8888)));

10.0.2.2地址为android emulator访问pc的地址(genymotion为10.0.3.2),8888为fiddler的代理端口。

这里写图片描述

(第二种方法)把虚拟机的网络设置端口为8888的代理,该方法可以会影响其他正常接口。

以android emulator为例
设置移动网络的apn代理,设置proxy 10.0.2.2,port 8888(genymotion proxy 10.0.3.2 并且是设置wifi代理)。

这里写图片描述

(重要)设置完毕后一定要开关一下飞行模式,才能正常使用域名转发功能

这里写图片描述

(真机测试)真机测试的话步骤和2一样,用wifi的话设置wifi代理,用移动网络的话设置apn代理,proxy使用pc机的本地IP地址,见下图,端口是fiddler内设置的8888

这里写图片描述

至此所有模拟json响应的步骤全部完成,这样我们就可以在开发的过程中,不需要等待服务器端完成接口就可以直接测试接口数据,等到服务端完成接口后,去掉所有代理设置和关闭fiddler就能正常访问接口了。

4.Whistle安装和使用介绍:

whistle基于nodejs环境来实现,因此需要先安装nodejs

下载linux 64bit版的nodejs后解压到相应目录

https://nodejs.org/en/download/

将node-v6.10.1-linux-x64/bin/内的node和npm文件设置软链接

$ sudo ln -s ~/Documents/node-v6.10.1-linux-x64/bin/node /usr/local/bin/node$ sudo ln -s ~/Documents/node-v6.10.1-linux-x64/bin/npm /usr/local/bin/npm

如果能正常输出Node的版本号,表示Node已安装成功

$ node -vv6.10.1

然后就能开始安装whistle了

$ npm install -g whistle

安装完成后还需要手动设置软链接

$ sudo ln -s ~/Documents/node-v6.10.1-linux-x64/bin/w2 /usr/local/bin/w2$ sudo ln -s ~/Documents/node-v6.10.1-linux-x64/bin/whistle /usr/local/bin/whistle

这时执行命令 whistle help 或 w2 help 就能够查看whistle的帮助信息了

$ w2 help

然后我们就能够开始使用whistle了,首先启动

$ w2 start

输出如下信息表示启动成功

[i] whistle started[i] First, use your device to visit the following URL list, gets the IP of the URL you can visit:    http://127.0.0.1:8899/    http://192.168.123.69:8899/    Note: If the following URLs are unable to access, check the server's firewall settings          For more information, please visit https://github.com/avwo/whistle[i] Second, configure your device to use whistle as its HTTP and HTTPS proxy on IP:8899[i] Last, use Chrome to visit http://local.whistlejs.com/ to get started

然后进入配置页面配置请求转发功能
这里写图片描述

然后输入 www.qq.com 可以看到转发到了 www.sohu.com
这里写图片描述

注意1:在chrome上测试如果使用switchyomega插件需要设置端口
这里写图片描述

注意2:whistle默认使用的端口是8899

关于whistle的更多使用方法请去https://avwo.github.io/whistle/查看

参考资料:
http://blog.csdn.net/guijiaoba/article/details/43198503
http://blog.csdn.net/forlong401/article/details/23538951
https://my.oschina.net/blogshi/blog/260953
https://avwo.github.io/whistle/

0 0