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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
python实现逆波兰计算表达式实例详解
May 06 Python
python文件操作之目录遍历实例分析
May 20 Python
使用Python写CUDA程序的方法
Mar 27 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
Python 控制终端输出文字的实例
Jul 12 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
sklearn+python:线性回归案例
Feb 24 Python
Python3 assert断言实现原理解析
Mar 02 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
Python中for后接else的语法使用
May 18 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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 数组实例说明
2008/08/18 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP实现的简单网络硬盘
2015/07/29 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
如何使用python切换hosts文件
2020/04/29 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
Shell编程面试题
2012/05/30 面试题
百年校庆节目主持词
2014/03/27 职场文书
商标侵权律师函
2015/05/27 职场文书
《实心球》教学反思
2016/02/23 职场文书
教育教学工作反思
2016/02/24 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
Oracle 多表查询基本语法实例
2022/04/18 Oracle
MySQL数据库事务的四大特性
2022/04/20 MySQL
springboot实现string转json json里面带数组
2022/06/16 Java/Android