Python使用requests发送POST请求的三种方式详解

小林子
小林子
发布时间:2026-10-13| 2人浏览过
原创

本文详细介绍Python中requests库发送POST请求的三种常见方式:以form表单形式提交数据、以json字符串提交数据以及通过multipart形式上传文件。通过具体代码示例和响应结果分析,帮助开发者掌握不同Content-Type下的POST请求实现方法。

本文主要探讨Python中利用requests库发送POST请求的具体实现,内容涵盖相关代码示例与原理分析。

一个完整的HTTP请求由三个部分组成:请求行、请求报头和消息主体,其结构大致如下:

  • 请求行
  • 请求报头
  • 消息主体

根据HTTP协议规定,POST提交的数据必须置于消息主体中,但协议并未强制规定具体的编码方式。服务端依据请求头中的字段来判断消息主体的编码类型,进而进行解析。常见的编码方式包括:

application/x-www-form-urlencoded

最常见的POST数据提交方式,即通过form表单形式提交数据。

application/json

以JSON字符串的形式提交数据。

multipart/form-data

通常用于上传文件的操作。

2.7.1 以Form形式发送POST请求

Requests库支持以form表单形式发送POST请求。只需将请求参数构造成一个字典,并将其传递给requests.post()函数的data参数即可。

url = 'http://httpbin.org/post'
d = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=d)
print r.text

输出结果:

{ 
“args”: {}, 
“data”: “”, 
“files”: {}, 
“form”: { 
“key1”: “value1”, 
“key2”: “value2” 
}, 
“headers”: { 
…… 
“Content-Type”: “application/x-www-form-urlencoded”, 
…… 
}, 
“json”: null, 
…… 
}

从输出可见,请求头中的Content-Type字段已设置为,且字典d = {'key1': 'value1', 'key2': 'value2'}以form表单的形式提交至服务端,服务端返回的form字段即为提交的数据。

2.7.2 以JSON形式发送POST请求

可以将一个JSON字符串直接传递给requests.post()的data参数,

url = 'http://httpbin.org/post'
s = json.dumps({'key1': 'value1', 'key2': 'value2'})
r = requests.post(url, data=s)
print r.text

输出结果:

{ 
“args”: {}, 
“data”: “{\”key2\”: \”value2\”, \”key1\”: \”value1\”}”, 
“files”: {}, 
“form”: {}, 
“headers”: { 
…… 
“Content-Type”: “application/json”, 
…… 
}, 
“json”: { 
“key1”: “value1”, 
“key2”: “value2” 
}, 
…… 
}

可以看到,请求头的Content-Type被设置为,并将变量s中的JSON字符串提交至服务端。

2.7.3 以Multipart形式发送POST请求

Requests同样支持以multipart形式发送POST请求,只需将一个文件对象传递给requests.post()的files参数即可。

url = 'http://httpbin.org/post'
files = {'file': open('report.txt', 'rb')}
r = requests.post(url, files=files)
print r.text

输出结果:

{ 
“args”: {}, 
“data”: “”, 
“files”: { 
“file”: “Hello world!” 
}, 
“form”: {}, 
“headers”: {…… 
“Content-Type”: “multipart/form-data; boundary=467e443f4c3d403c8559e2ebd009bf4a”, 
…… 
}, 
“json”: null, 
…… 

文本文件report.txt的内容仅有一行:Hello world!。从请求的响应结果可以看出,数据已成功上传至服务端。

总结

以上为本文关于Python使用requests发送POST请求的完整实例代码,希望对各位有所帮助。感兴趣的朋友可继续查阅本站其他相关专题,如有不足之处,欢迎留言指正。感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。