在接口自动化代码编写过程中,发现post里的请求参数一直报错;然后查看登录接口,请求参数是以application/x-www-form-urlencoded进行编码,但是传入的值却为json类型。
1、理清Post请求与消息体的关系
Post请求相对get来说,有多种编码方式,但参数一定是在请求体里。Content-Type的作用是,告诉服务器请求体编码方式是什么,按照它给的标准解析数据就行了。
2、Content-Type主要分类
2.1 application/x-www-form-urlencoded
以form表单形式提交数据,数据按照 key1=val1&key2=val2 的方式进行编码。
requests库里,post方法参数data与json默认都为None,结合form表单与data可能的值(字典、元祖或列 表),最后传参为data且类型是字典。
res = requests.post(url,data=data,header=None)
*图片 2.2 text/xml
它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
2.3 application/json
以json串提交数据;同理,这里传参为json,涉及到json转字典
json格式: data='{"key1":"vaule1","key2":"value2"}'
json.dumps(data)
res = requests.post(url,data= json.loads(data),header=None)或
res = requests.post(url,json=data,header=None)
2.4 multipart/form-data
以multipart形式上传文件
fp = open (filename,"rb")
res = requests.post(url,files = fp,header=None)
网友评论