本文为楼主原创,转载请表明出处:http://blog.csdn.net/Suma_sun/article/details/52216114
最近公司有个项目是用WebView + HTML5做的。登陆界面是本地的,接口用的还是web的接口(不要问我为什么登陆界面不用h5…),有点坑返回的不是json数据,返回码是302重定向,成功与失败信息全在http的header里面。
由于返回码是302所以需要取消重定向的操作。
故使用了
static void setFollowRedirects(boolean set) 全局设置没有效果,可能是需要在url.openConnection之前执行吧。
后来(抓包验证后)问了同事才知道用的另一个方法
void setInstanceFollowRedirects(boolean followRedirects) 改变实例是否自动执行重定向操作。
由于关闭302自动重定向失败,总是获取不到http里面的值只好抓包看看数据对不对了。
首先用的是charles 这个是医生给我推荐的(徐宜生,群英传的作者)。
Charles官网
破解什么的自己google吧,如果实在不行私聊我 我有注册码…
PC抓包
安装完直接运行就可以抓本机的包了
CSDN上搜索charles,然后切换到charles看看
双击还能弹窗复制
Sequence模式更直观,都不需要一层一层打开
200返回的内容 参数都很直观,返回的是text/html
用text、html查看时一样的,不过html查看会根据内容变色 看上去更直观
304返回的内容很直观!但如果没有关闭自动重定向的话紧接着就会又触发get请求,返回码为200,之前304的header你是拿不到了。
手机抓包
charles抓包比linux的tcpdump抓包简单多了!使用的是代理来抓包。
在这里直接用Genymotion来演示,真机情况是一致的。
首先打开charles->Proxy->Proxy Settings…
默认端口号为8888,如果没有冲突就不需要修改。
使用cmd的ipconfig查询本机Ip
使用哪个网卡的ip都行,设置过滤ip过滤(Proxy->Access Control Settings里 add你的ip地址)。
打开手机连接PC同一个IP的网络(外网ip相同的路由器即可),连接上长按设置修改wifi
高级 代理设置手动代理,填入ip和charles的端口号即可
直接打开浏览器访问网页 并用clares查看请求即可
就是这么简单!
其实抓包不仅仅让你知道数据是什么样的。最重要的是这是证据啊!当你调用别人(后台写的)的接口总是有问题,对方又扯皮的话(╯﹏╰),嘿嘿,请求完后保存文件直接发给他,让他装个软件解析,自己看!
证据在手,让他排查错误去。