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基础教程之lambda表达式使用方法
Feb 12 Python
python生成指定尺寸缩略图的示例
May 07 Python
Python3实现从文件中读取指定行的方法
May 22 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
python获取栅格点和面值的实现
Mar 10 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
python高级特性简介
Aug 13 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 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中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
javascript实现简单的省市区三级联动
2015/05/14 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
javascript中 try catch用法
2015/08/16 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
2019/12/22 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
浅谈python常用程序算法
2019/03/22 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
工业自动化专业自荐信范文
2014/04/10 职场文书
代理人委托书
2014/08/01 职场文书
教师师德师风整改措施
2014/10/24 职场文书
环境建议书
2015/02/04 职场文书
本溪水洞导游词
2015/02/11 职场文书
读书笔记格式
2015/07/02 职场文书
2016寒假假期总结
2015/10/10 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
Java实现带图形界面的聊天程序
2022/06/10 Java/Android