昨天接口调试遇到的坑
下面是需求文档
调用地址
post 请求
https://apitest.bdc.abc.com/toilet/status/report
请求协议
参数名 必选 类型 说明
time Yes int 更新时间,Unix时间戳
male Yes Stat 男厕所状态信息
female Yes Stat 女厕所状态信息
third Yes Stat 第三卫生间
Stat节点
参数名 必选 类型 说明
in Yes int 入流量
out Yes int 出流量
stay Yes int 驻留人数
响应参数
参数名 类型 说明
code int64 返回码:0:成功,其他:失败
msg string 返回信息
data 对象 返回的数据对象
Data节点
参数名 必选 类型 说明
total Yes int 请求更新厕所数量
num Yes int 成功更新厕所数量
这里要做的是根据公厕的使用情况,把数据推到服务端,好吧,我承认我是小白, 来来来,分析一下并且总结下
文档规范
这里出现了一个节点的概念,也就是传入参数的多维数组的键值 , 转化为json也是一个属性名,只不过书面上没见过这种写法,所以不太懂了鉴权问题
这个问题是第二次遇见了,但是上次没有搞懂,这次也惨淡收场
今天就好好分析下原因了
首先是生成query_string值的问题,如上面所示, 要求query_string的格式为 path+ ‘?’ + url参数(参数进行url编码),为了必变出现特殊字符串
这里使用的是rawurlencode进行编码的- urlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码
- rawurlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 RFC 1738 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。
包体
说到这,可以看出我的基础有