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 28 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python实现冒泡排序的简单应用示例
Dec 11 Python
tensorflow构建BP神经网络的方法
Mar 12 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
pytorch 模型可视化的例子
Aug 17 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 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 根据IP地址控制访问的代码
2010/04/22 PHP
php实现RSA加密类实例
2015/03/26 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
js Date概念详细介绍
2013/11/22 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
js实现一个简单的数字时钟效果
2017/03/29 Javascript
Vuex简单入门
2017/04/19 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Python实现字典的key和values的交换
2015/08/04 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
自考生自我评价分享
2014/01/18 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
给病人的慰问信
2015/03/23 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
MySQL 数据类型详情
2021/11/11 MySQL
在js中修改html body的样式
2021/11/11 Javascript