模拟服务器返回数据

作者简介 原创微信公众号郭霖 WeChat ID: guolin_blog

本篇来自NEXTB的投稿,介绍了两种模拟服务器返回数据的方法,希望能帮助到有需要的朋友。

NEXTB的博客地址:

https://yuanjunli.github.io

背景

模拟服务器返回的数据,在以下场景具有实际意义:

和服务器开发协商好开发接口,但服务器API尚未部署,想接口定义好就进行开发;

服务器已部署,返回的数据不能测试到各种情况,希望返回期待数据测试边界情况;

如果客户端开发人员能不走服务器,通过模拟数据返回,能提升开发效率和程序质量。

实现思路

本文主要讲解两种实现方式:

1. 使用网络分析工具拦截客户端请求,并返回伪造数据。

优点:无需改变客户端代码;不依赖客户端平台,android和ios都通用;

缺点:依赖网络分析工具;调试相对不灵活;

2. 使用客户端网络框架拦截请求并返回。

优点:返回数据由客户端代码决定,灵活易于调试;

缺点:需要改变客户端代码;需要根据客户端网络框架进行响应处理,不同的网络框架处理不一样;

对于方案一,主要使用网络分析工具 Charles 进行拦截并返回,对于方案二,主要讲解使用OkHttp作为网络框架,利用拦截器机制实现模拟返回。

使用Charles模拟数据

准备条件

客户端需要连接到和电脑同一个网络(手机连接电脑发出的wifi)

官网下载安装:

https://www.charlesproxy.com/download

配置

配置方法参考:

Charles:移动端设备网络抓包

http://shinelw.com/2016/04/21/about-charles

完成配置后,可以在Charles中检测到手机的网络请求和响应。

转接服务器地址

转接服务器地址是指,当客户端请求 地址B 时,本应该向指定的服务器请求数据,但 Charles 可拦截此ip地址,使不向服务器地址请求,并且返回另外一台服务器模拟的数据。

首先,我们来生成模拟返回数据的api接口;

打开mocky网址:

http://www.mocky.io

输入想伪造Body数据,点击Generate my HTTP Response按钮生成 http 的 url地址。

如图,当点击http://www.mocky.io/v2/58592298240000ba087c5a92时,返回json格式的数据。

有了模拟数据的api地址,接着设置需要模拟的api接口。经过配置后,Charles 可检测手机的网络请求,选择需要模拟返回数据的网络请求接口,右键选择Map Remote…

Map From为需要拦截的接口,Map To为模拟的api接口,此处我们填入http://www.mocky.io/v2/58592298240000ba087c5a92,如下图:

选择标题栏Tool工具图标,取消选择Map Remote,再勾选Map Remote,让设置的ip地址生效。此时,当客户端请求原地址时,都会返回模拟ip地址的数据,效果图如下:

小结

以上,使用 Mocky 网络和 Charles 工具实现模拟数据返回,无需改变客户端原有代码,但是,当需要改变客户端返回的数据时,则需要重新生成http模拟地址,再次设置Charles Map to内容。

自定义OkHttp Interceptor

以下内容假设用户掌握 OkHttp 的简单使用,重点讲解自定义 OkHttp Interceptor 模拟返回数据。

OkHttp拦截器

如图,OkHttp 可在 Request 和 Response 中设置任意个数的 Intercepor(图中用圆圈标识),对请求体和响应体进行处理。借助 OkHttp Interceptor 机制,创建一个 MockIntercepor,模拟返回一个 Response,虚线部分为模拟的 Response。

代码实现

MockInterceptor 代码如下:

在 debug模式 下,将此 Interceptor 添加到网络请求的 OkHttp 中,即可对指定的api地址进行拦截,并且返回特定的数据。

小结

使用 OkHttp 的拦截机制,可实现改变部分代码则可模拟返回数据,返回的数据可在代码中设置,可使用工厂模式将模拟数据的生成变动代码放到Factory中。依赖网络请求框架,若原项目使用 OkHttp 或 Retrofit 作为网络框架,可轻易实现模拟接口。

引用

Charles:移动端设备网络抓包

http://shinelw.com/2016/04/21/about-charles

利用charles模拟Http请求和响应

http://blog.csdn.net/guijiaoba/article/details/43198503

Hack Retrofit (2) 之 Mock Server

http://www.println.net/post/Android-Hack-Retrofit-Mock-Server

OkHttp Interceptor

https://github.com/square/okhttp/wiki/Interceptors


完。。。。。。。。。。。。。。。。。。。。。

文章原创作者GuoLin 书籍推荐

郭林大神原创android 书籍:《第一行代码 android》

淘宝链接: https://s.click.taobao.com/t?e=m%3D2%26s%3DgKUfuKdAZKocQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67p2n%2BQBNMyE6Rku8%2Bpj6eJall3bs%2B3NRhNHnsKI%2BqxhyM0iVZhTFBom4YIorMPnmg8G0g2OJi%2FzmXHfenomYtn5EW9vzeG8LzfPUwktUBEmkxg5p7bh%2BFbQ%3D&pvid=10_106.6.161.154_3367_1490163222155

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容