iOS开发之如何模拟数据(一)

背景

最近APP上线了一个版本,但是上线后发现测试数据(应该是接口返回的,但是写死了)没有删除,导致线上出现严重的BUG。

问题

那么如何在开发中使用测试数据。通常情况下为了方便使用,我们会在代码中直接创造一些假数据使用,方便快捷,但是这不仅污染了代码(测试数据一大堆),而且有时候你正在改一个东西时被其他事情打断了,回来后又忘了改掉测试数据就尴尬了。所以这是中不好的习惯。

解决办法:

一、本地搭建测试服务器:

就是本地自己搭个服务器,然后把开发时需要拦截的网络请求地址改为自己搭建的服务器地址,然后返回自己自定义的JSON数据。但这种方式也有三个缺点:

  1. 有一定门槛,虽然搭建服务器是很简单的事,并不是所有人都会,也是需要一定的学习成本的。
  2. 还是要修改源码中网络请求的地址,这虽然已经把源码污染降到最低了,但毕竟还是有。
  3. 要想模拟不同的网络状态,还需去修改服务器的代码,不方便。

二、网络代理

第二种就是利用现有的网络代理软件,直接拦截对应的网络请求,然后返回本地写好的JSON数据。

  1. 不会污染代码,代码写的就是线上的逻辑,接口地址不需要改变,也不需要写测试数据。
  2. 拦截起来很方便,许多网络代理软件,都自带拦截甚至改写网络请求的功能,所以启动拦截功能很方便。
  3. 方便调试,网络代理一般都有改变一个网络请求状态的功能,可以轻松实现返回网络错误、网络超时和延迟网络请求等不同的网络请求状态的功能,非常方便。

下面介绍一下如何通过charles的map local功能实现接口请求拦截,然后返回自己生成的json数据。

map local设置流程

Charles配置:

1、Proxy -> Proxy Settings ,填入代理端口8888 ,并且勾选 “Enable transparent HTTP proxying"

14993277462433.png

iPhone设置:

  1. 首先保证iphone和你的mac在同一网段
  2. 获取mac电脑的ip地址
  3. 进入手机设置 -> 无线局域网 -> 选中连接的wifi -> 进入wifi详情 -> 切换 ”HTTP代理“为手动 -> 输入mac电脑对应的ip地址和代理端口8888
  4. 连接之后,Charles会弹出提示框,点击allow之后,手机请求网络就会走代理(mac电脑)。

mac local配置

1、 Tools -> Map Local...

屏幕快照 2017-07-06 下午4.01.24.png

2、 勾选 ” Enable Map Local“

屏幕快照 2017-07-06 下午4.02.49.png

3、点击 ”Add“添加要拦截的接口地址(可以直接把整个连接填入 Host选项,它自己会识别各个选项)。

屏幕快照 2017-07-06 下午4.03.28.png
屏幕快照 2017-07-06 下午4.05.18.png
屏幕快照 2017-07-06 下午4.05.31.png

4、填写Local Path,这个是你本地json文件的路径

屏幕快照 2017-07-06 下午4.05.48.png

5、点击”OK“添加完毕,启动APP,当调用这个接口的时候,代理就会拦截接口请求,然后返回你本地的JSON文件中的json数据。

参考链接:

  1. http://www.jianshu.com/p/afef615c932e
  2. http://www.jianshu.com/p/5539599c7a25

问题:

https抓包问题:
1、Charles: Proxy -> SSL Proxying Settings -> Enable SSL Proxying -> 添加你要拦截的Host

14993296057932.png

2、手机安装HTTPS证书
通过电脑浏览器打开http://charlesproxy.com/getssl
下载对应系统的证书,然后通过邮件发送给手机,手机下载安装验证。
3、证书信任
1、iOS低版本系统,好像不需要证书信任也能拦截到https
2、iOS10.3真机抓包https,手机设置 -> 通用 -> 关于本地 ->底部证书信任设置 -> 打开charles证书信任 才能抓包。挂证书的API貌似抓不到包,只显示请求错误,只有不挂证书的才能抓包。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,601评论 18 139
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 10,538评论 0 11
  • 世间最复杂的就是我们人的感情,因为难以琢磨,所以经常有人说细节将决定爱情的成败,那么有没有什么细节可以检测出爱情呢...
    男人风尚club阅读 280评论 0 0
  • 我和我在基础物理学界的同事们是爱因斯坦的理性的后继人,乐于自认为我们是在探求美。 有些物理方程丑得让人不愿多看一眼...
    鸭梨山大哎阅读 297评论 0 0
  • 深夜书·卷二《师门》 天空很好 雨过初晴 朋友说 希望你的心情也是 但愿 以前 我不知道我喜欢云 因为星星月亮总是...
    涼玊阅读 182评论 0 1