缘起
过完年后,一个负责APP接口的同事离职了,然后他的工作部分划归我负责,在调试APP接口的时候,经常会出现:使用谷歌插件【postman】访问有正常数据返回,使用 android是各种报错;或者使用android正常,IOS访问时又是各种报错;
一般来说遇到这种情况,总是会收到一条来自app开发的QQ信息:服务器有问题,请求不了。但是大多情况下都是APP端不按照接口文档中给定格式要求进行请求;
最后意外发下了fiddler抓包工具
介绍fiddler
The free web debugging proxy for any browser, system or platform
download http://www.telerik.com/fiddler
配置
开启配置,使用手机代理
工具栏简介
fiddler 详细使用方法可以参考 小坦克fiddler教程
由于【小坦克fiddler教程】比较老,也可以直接参考官网
http协议简介
使用fiddler抓包工具的话,一定要对http协议有所了解
http建立在tcp/ip协议基础上,是应用层协议,主要制定request头解析规则及response头解析规则
http协议建立在tcp/ip协议基础上,所以http协议具备可靠特性,关于tcp协议可以参见 我的另一篇博客【unix网络编程—读书笔记(一)—tcp/udp/sctp简介】
http组成
http请求由三部分组成
- 请求行
- 消息报头
- 请求正文
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF
Method表示请求方法;
Request-URI是一个统一资源标识符;
HTTP-Version表示请求的HTTP协议版本;
CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符);
请求方法:
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
http状态码简介
1xx:请求收到,继续处理
2xx:操作成功收到,分析、接受
3xx:完成此请求必须进一步处理
4xx:请求包含一个错误语法或不能完成
5xx:服务器执行一个完全有效请求失败
http状态码详解请参见
关于http协议详解可参见
工作中遇到问题摘录
ios开发人员,将 请求body格式化为json字符串,进行服务请求;
表现: 服务端获取不到ios post请求参数
ump开发人员,提交post请求时,多提交一个空form-data;
表现: 服务端接收不到ump手机post提交的任何数据