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中使用logging模块代替print(logging简明指南)
Jul 09 Python
简单解决Python文件中文编码问题
Nov 22 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
详解Python文本操作相关模块
Jun 22 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
python将一组数分成每3个一组的实例
Nov 14 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
Feb 05 Python
python中@property的作用和getter setter的解释
Dec 22 Python
python 实现德洛内三角剖分的操作
Apr 22 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
Destoon实现多表查询示例
2014/08/21 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
JSON.stringify 语法实例讲解
2012/03/14 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
jQuery实现验证年龄简单思路
2016/02/24 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python扩展内置类型详解
2018/03/26 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
如何在django中添加日志功能
2020/02/06 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
python交互模式基础知识点学习
2020/06/18 Python
python爬取招聘要求等信息实例
2020/11/20 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
J2EE中常用的名词进行解释
2015/11/09 面试题
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
获奖感言怎么写
2015/07/31 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python