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 相关文章推荐
Python代码调试的几种方法总结
Apr 15 Python
解析Python中的异常处理
Apr 28 Python
Python实现大文件排序的方法
Jul 10 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
Python序列类型的打包和解包实例
Dec 21 Python
python3.4中清屏的处理方法
Jul 06 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
python神经网络 使用Keras构建RNN训练
May 04 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
JS针对Array的各种操作汇总
2016/11/29 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
8个有意思的JavaScript面试题
2019/07/30 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
详解Python中的文本处理
2015/04/11 Python
Python unittest模块用法实例分析
2018/05/25 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
放飞中国梦演讲稿
2014/04/23 职场文书
医院党员公开承诺书
2014/08/30 职场文书
详解Java实现数据结构之并查集
2021/06/23 Java/Android
oracle索引总结
2021/09/25 Oracle