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连接MySQL数据库实例分析
May 12 Python
Python实现查找系统盘中需要找的字符
Jul 14 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
python查看矩阵的行列号以及维数方式
May 22 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python opencv肤色检测的实现示例
Dec 21 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 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中ADODB类详解
2008/03/25 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
JS动画效果代码3
2008/04/03 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
jQuery链使用指南
2015/01/20 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python实现的生成word文档功能示例
2019/08/23 Python
python中加背景音乐如何操作
2020/07/19 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
《假如》教学反思
2016/02/17 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技