利用charles模拟Http请求和响应
来自: http://blog.csdn.net//guijiaoba/article/details/43198503
最新项目组服务端的童鞋们太不给力了,接口一直没有出来,为了方便开发。服务器的童鞋们定义好了http接口以及返回的json结构。然后客户端就可以利用json结构,模拟数据,然后顺利开发,最后等服务器接口完成的时候,再次做一下联合调试。
这样的方法,有专业的名字mock。
下面介绍下怎样利用mock http响应。
比如有个http接口
http://xx.oo.com/api/helloworld
返回的json结构如下。
{ "hello": "world" }我们可以利用下面的网站,模拟一个这样的json响应。
点击Generate my HTTP Response 会生成一个url,访问这个url就可以返回你需要的json字符串。上面我定义的json,生成的url如下,点击访问,就可以得到。
http://dtjson.com/v2/54c76c669663e6eb041a7281
至此,我们假的接口已经完成了,那么在客户端代码里面是否要把http://xx.oo.com/api/helloworld替换成http://dtjson.com/v2/54c76c669663e6eb041a7281呢。
当然不是了,我们可以利用一个工具,charles,这个可以代理Android模拟器或者手机,监听所有的http访问,同时它还有修改http请求和响应的功能,功能很是强大。
具体的charles介绍,这里不做介绍,可以参考 http://blog.chinaunix.net/uid-21633169-id-4329277.html,里面详细介绍了charles的主要用法。
在android模拟器 http://xx.oo.com/api/helloworld,是没有响应的,因为这个是我随便填写的url,接下来我们用charles来mock请求
下面是利用charles拦截的http请求结果,在这里我们可以看http协议,包括请求行,头文件等。但是在response的标签里面是空白的,因为这个请求是没有响应的。
我们设置下这个请求,右击这个请求,出现如下菜单,我们选择Map Remote.然后填上我需要的代理地址,点击确定,然后重新访问。
然后就能顺利访问了。
至此,所有模拟请求数据的步骤已经完成。在实际开发中,只要生成模拟的测试,就可以顺利跳过等待接口的步骤,继续工作,等到接口完成的时候,去除remote map的设置,就可以访问正常的接口。