废话不多说,直接开干!
最近做项目遇到post请求问题,开始可以拿到数据,后来就不行了,纠结啊!
于是乎找找方法,先来补充知识点
1、GET是通过URL方式请求,可以直接看到,明文传输。
2、POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的。
3.GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中。
大概了解get,post请求问题,接下来细细看
Reqeusts支持以form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。
1、data为dict时,如果不指定content-type,默认为application/x-www-form-urlencoded,相当于普通form表单提交的形式
2、data为str时,如果不指定content-type,默认为text/plain
3、json为dict时,如果不指定content-type,默认为application/json
4、json为str时,如果不指定content-type,默认为application/json
解析下
dict() 函数用于创建一个字典
text/plain 文本形式
application/json 作为请求头告诉服务端消息主体是序列化的JSON字符串。除低版本的IE,基本都支持
额外充电一下相关知识
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
application/json 作为请求头告诉服务端消息主体是序列化的JSON字符串。除低版本的IE,基本都支持。
text/plain 空格转换为 “+” 加号,但不对特殊字符编码。
总结:之前post请求用可以拿到数据,后来就不行了
da = requests.post(url=url, headers=headers, json=jdata, verify=False).text
然后替换一下,就可以拿到数据了
da = requests.post(url=url, headers=headers, data=jdata, verify=False).text