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使用matplotlib填充图形指定区域代码示例
Jan 16 Python
python 实现数组list 添加、修改、删除的方法
Apr 04 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Python如何使用OS模块调用cmd
Feb 27 Python
python实现简单井字棋小游戏
Mar 05 Python
Django如何批量创建Model
Sep 01 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
关于Python中*args和**kwargs的深入理解
Aug 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
简单实用的.net DataTable导出Execl
2013/10/28 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
Python for循环及基础用法详解
2019/11/08 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
python3中编码获取网页的实例方法
2020/11/16 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
函授自我鉴定
2013/11/06 职场文书
家具促销活动方案
2014/02/16 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
文明班级申报材料
2014/12/24 职场文书
2015年采购部工作总结
2015/04/23 职场文书
护士2015年终工作总结
2015/04/29 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android