requests中构造post请求注意点
构造post请求时需要注意点:
通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。
如果是urlencoded 格式 data=字典
如果是json格式的 data=json字符串 或者json=字典post底层会自动转换为json格式
1、不管json是str还是dict,如果不指定headers中的content-type,默认为application/json
2、data为dict时,如果不指定content-type,默认为application/x-www-form-urlencoded,相当于普通form表单提交的形式
3、data为str时,如果不指定content-type,默认为application/json
4、multipart/form-data类型:multipart/form-data主要用于文件上传,
当我们使用它时,必须让 form表单的enctype 等于 multipart/form-data
files = {"file": open("C:/Users/Administrator/Desktop/test.txt", "rb")}
r = requests.post("http://httpbin.org/post", files=files)
注意:消息体格式嵌套
外部格式>内部格式 外部表单+内部json
内部json格式的需要手动填入json格式字符串,或者使用dumps()函数转换下
具体代码:
info = json.dumps({"name":"lll","desc":"test","display_idx":"4",})
r3 = requests.post("http://localhost/api/mgr/sq_mgr/",
data={"action":"add_course",
"data":info})
r3 = requests.post("http://localhost/api/mgr/sq_mgr/",
data={"action":"add_course",
"data":'''
{"name":"lll","desc":"test","display_idx":"4"}
'''})