requests post请求时参数复杂化解决办法

一.接口抓取步骤

1.今天给大家演示的是参数中附带一个json列表的应该怎么处理,首先,准备抓包工具(浏览器也行,只是这个工具能够准确反应请求格式,记住是格式)

2.如下图:commodity_list所对应的就是[{json}],然后下面一堆字段,然后对应值,很清晰很明了,编写自动化的时候,可以直接复制替换到params或者data中的数据。

3.当然,你也可以选择参照接口文档,但是如果你们开发偷点小懒 搞点伪代码   你就遭殃了

二、代码编写部分  由于小编上篇博客已经讲解了基础的get post方法以及搭建如何导入requests

1.这里直接开始 运行如下



2.大家看控制台 ,这个字符串可能你觉得乱码了,在这里 我们可以搜索百度 unicode转中文,得到的信息如下

b'{"status":0,"message":"\没\有\找\到\用\户\数\据\!","errCode":0,"data":[]}'

或者print(r_creatorder.json())或者使用print(json.dumps(r_creatorder.json(),ensure_ascii=False,indent=4))

提示的是一个json格式 ,说没有找到用户数据,但是小编在思索,这肯定是因为cookie或者session的缘故  虽然小编第一此成功登陆了系统,但是并没有保留会话,第二次客户端与服务器的连接是断开的,所以当我把商品传输给服务器的时候,服务器却不认识我是谁了 于是返回说 没有找到用户数据

3.那么如何保持会话呢?我们可以采取requests.session.post/get来进行请求,具体代码实行如下 



编写过程中遇到的问题:

a)首先格式的问题,commodity_list的值中 需要去除空格,可以百度搜索json格式校准,去除空格,然后粘贴上去(这就是小编用fiddler的原因,因为格式比较明确)

b)另外commodity_list是一个数据的json格式,当时某些值(json自带格式,键:值 并且使用括号括起来,并且键必须使用双引号,而值,string的需要用引号引起来,但是int类型的值不需要引) 是int类型,可能没有”“   所以你要自己加上去

c)变量的问题,其实这里小编也是不理解,也就是说当requests.get/post(url,data/params=xxxxx)   有时候比如url 在这里有些时候我们是复制后台url地址 然后采取”url“的形式,但是小编觉得这样复制进去 太长了语句,于是前面定义了一个url={"url地址"}  然后后面在函数中使用这个变量 ,结果会报错,然后刚才的commodity_list的值也是,然后直接放进去弄成一堆,却不报错。

d)这里小编的是不需要传送json格式的,如果你们参数必须需要使用传送json格式的给服务器的话,可以调用json.dumps("xx_json")


猜你喜欢

转载自blog.csdn.net/tester_xjp/article/details/79618413