Python使用requests发送POST请求实例代码


Posted in Python onJanuary 25, 2018

本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下。

一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样:

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

HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析。具体的编码方式包括:

application/x-www-form-urlencoded

最常见post提交数据的方式,以form表单形式提交数据。

application/json

以json串提交数据。

multipart/form-data

一般使用来上传文件。

2.7.1 以form形式发送post请求

Reqeusts支持以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字段已设置为application/x-www-form-urlencoded,且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设置为application/json,并将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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python中文件操作简明介绍
Apr 13 Python
python实现zabbix发送短信脚本
Sep 17 Python
pybind11和numpy进行交互的方法
Jul 04 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
Django的性能优化实现解析
Jul 30 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
Python开发入门——迭代的基本使用
Sep 03 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
PyTorch的Debug指南
May 07 Python
python使用pandas实现数据分割实例代码
Jan 25 #Python
python实现闹钟定时播放音乐功能
Jan 25 #Python
python实现壁纸批量下载代码实例
Jan 25 #Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 #Python
Python动刷新抢12306火车票的代码(附源码)
Jan 24 #Python
python中的set实现不重复的排序原理
Jan 24 #Python
详解Python之unittest单元测试代码
Jan 24 #Python
You might like
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
JS功能代码集锦
2016/05/04 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
angular2中Http请求原理与用法详解
2018/01/11 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
python检测远程服务器tcp端口的方法
2015/03/14 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
关于Python作用域自学总结
2019/06/10 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
Python实现点云投影到平面显示
2020/01/18 Python
python中字典增加和删除使用方法
2020/09/30 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
STP的判定过程
2012/10/01 面试题
Shell编程面试题
2012/05/30 面试题
实习生自我鉴定范文
2013/12/05 职场文书
委托证明模板
2014/09/16 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL