51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Python requests 发送 post 请求的三种方式

在http 协议中,post 提交的数据需放在消息主体的,但协议并没有规定必须使用什么编码方式,从而导致了提交方式的不同。本文记录 form 表单、json和文件三种post方式。

简介 {#简介}

http 协议中,post 提交的数据需放在消息主体的,但协议并没有规定必须使用什么编码方式,从而导致了提交方式的不同。服务端根据请求同一种的 Content-Type 字段来获取请求中消息主体是用何种方式进行编码,再对消息主体进行解析。

具体的编码方式有:

  • application/x-www-form-urlencoded # 以 form 表单形式提交数据,最常见也是大家最熟悉的
  • application/json # 以 json 串提交数据。
  • multipart/form-data # 上传文件

提交Form 表单 {#提交Form-表单}

"Content-Type": "application/x-www-form-urlencoded"

requests 提交Form表单,一般存在于网站的登录,用来提交用户名和密码。以 http://httpbin.org/post 为例,在 requests 中,以 form 表单形式发送 post 请求,只需要将请求的参数构造成一个字典,然后传给requests.post()data 参数即可。

代码如下:

输出效果如下:

httpbin.org 网站可以显示你提交请求的内容,输出的"Content-Type":"application/x-www-form-urlencoded",证明这是提交Form的方式。

提交json串 {#提交json串}

"Content-Type": "application/json"

对于提交json串,主要是用于发送ajax请求中,动态加载数据。

写法一 {#写法一}

把data进行json编码,再发送。

写法二 {#写法二}

处理将data主动编码为json发送之外,requests还提供了一个json参数,自动使用json方式发送,而且在请求头中也不用显示声明 'Content-Type':'application/json; charset=UTF-8'。

上传文件 {#上传文件}

"Content-Type": "application/x-www-form-urlencoded"

Content-Type类型为multipart/form-data,以multipart形式发送post请求,只需将一文件传给 requests.post() 的files参数即可。

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/coding/python/python-post/python-post/

赞(0)
未经允许不得转载:工具盒子 » Python requests 发送 post 请求的三种方式