请求一个post接口时,发现抓的包中post data数据中有同名参数。
对于python来说,一般都会把post参数放在data字典里,但是字典的key值是不能重复的,所以如果打印的话data只会出现同名的第二个参数。那post请求要该怎么请求呢?
这种情况下
第一步就是对照抓包数据,查看data字典的数据是否完整(包含重复参数)。
第二步就是查看请求头了。数据没有错误的情况下,那就只有数据传输方式的问题了。
在请求头中的Content-Type参数的作用是表示具体请求中的媒体类型信息。
Content-Type 设置为 application/x-www-form-urlencoded时body提交的数据需要按照 k1=v1&k2=v2 的方式进行编码,然后进行提交。
headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
对data进行编码后同名参数就能共存了(如果是fiddler抓包,raw界面请求头下会有一行data编码后的数据,数据中同名参数是同时存在的),请求正常了。
追加:
又遇到同名参数,是get请求,去掉其中一个参数,请求仍然正常。
所以遇到这种问题,仔细研究接口,具体问题具体分析,仅供参考。
网友评论