一个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
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

输出:


“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
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

输出:


“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
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

输出:


“args”: {}, 
“data”: “”, 
“files”: { 
“file”: “Hello world!” 
}, 
“form”: {}, 
“headers”: {…… 
“Content-Type”: “multipart/form-data; boundary=467e443f4c3d403c8559e2ebd009bf4a”, 
…… 
}, 
“json”: null, 
…… 
}

文本文件report.txt的内容只有一行:Hello world!,从请求的响应结果可以看到数据已上传到服务端中。

Python 使用requests发送POST请求相关推荐

  1. Python 技术篇-requests发送post请求传文件给flask服务端报405、400问题解决方法

    这是我 flask 服务端的一块代码,可以看到有个 methods=['GET', 'POST'],如果没有这个参数,发送请求就会报 405,因为默认能只接收到 get 请求,接收不到 post 请求 ...

  2. Python 使用requests发送POST请求总结

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/junli_chen/article/details/53670887 一个http请求包括三个部分, ...

  3. Python接口测试- requests 发送 post 请求的几种方法

    目录 前言: 发送 json 格式的数据 前言:  想了解更多相关知识请关注我吧!或者点击这里领取全套[软件测试/自动化测试]海量资料免费领取 POST 请求用于向服务器发送数据.与 get 相比更安 ...

  4. python post请求实例_Python使用requests发送POST请求实例代码

    本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下. 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 ...

  5. Python 使用 Scrapy 发送 post 请求的坑

    From:https://www.jb51.net/article/146769.htm 使用 requests 发送 post 请求 先来看看使用requests来发送post请求是多少好用,发送请 ...

  6. requests发送post请求的一些疑点

    requests发送post请求的一些疑点 前言 在Python爬虫中,使用requests发送请求,访问指定网站,是常见的做法.一般是发送GET请求或者POST请求,对于GET请求没有什么好说的,而 ...

  7. requests发送http请求

    requests发送http请求 发送请求:(数据获取.乱码解决) import requests response = requests.get('http://www.baidu.com') # ...

  8. python绘制蚊香形_Python requests发送post请求的一些疑点

    前言 在Python爬虫中,使用requests发送请求,访问指定网站,是常见的做法.一般是发送GET请求或者POST请求,对于GET请求没有什么好说的,而发送POST请求,有很多朋友不是很清楚,主要 ...

  9. python+pytest接口自动化框架(5)-requests发送post请求

    在HTTP协议中,与get请求把请求参数直接放在url中不同,post请求的请求数据需通过消息主体(request body)中传递. 且协议中并没有规定post请求的请求数据必须使用什么样的编码方式 ...

最新文章

  1. 中国云计算市场加速发展 今年有望突破3000亿
  2. CS231n 学习笔记(3)——神经网络 part3 :最优化
  3. androidHandler讲解
  4. ABAP 使用DYNP_VALUES_READ来获取屏幕字段值
  5. linux怎么运行ofstream,ofstream和ifstream详细用法---转
  6. flutter获取Android照片地址,Flutter项目安卓配置启动图片
  7. php过滤4字节的字符串,过滤utf8 字符中超过三个字节的字符,或者非utf8字符
  8. [csp-201809-4]再卖菜 差分约束or记忆化搜索
  9. samba服务器的设置
  10. TM1640操作源码--LED驱动IC
  11. java lifo_java:stack栈: Stack 类表示后进先出(LIFO)的对象堆栈
  12. js 实现简单区块链
  13. 7-2 符号配对 (20 分) c语言版
  14. 华硕电脑连接不上wifi_华硕电脑连不上无线网怎么办
  15. Django 教程之数据库模型
  16. 【C语言管理系统】 医院住院病人信息管理系统
  17. 使用d3画横向组织架构图,兼容ie8(一)
  18. dapi 基于Django的轻量级接口测试平台一
  19. 科普:什么是图灵机?
  20. 极光推送收费标准_《天涯明月刀OL腾讯旗下 北极光工作室的 厄运魔咒:“做什么凉什么”》...

热门文章

  1. 屌丝逆袭,通过相亲实现阶层跃迁的秘诀
  2. RT-Thread 简介 https://www.rt-thread.org/
  3. matlab机器学习安装,机器学习(一):学习环境搭建
  4. linux otl 连接mysql_Linux下用OTL操作MySql(包括自己封装的类库及示例代码下载)...
  5. 小鹏汽车回应“侵犯消费者权益被罚3000元”:已于3月8日对购车协议内容进行调整...
  6. 押中三位奥运冠军 元气森林“赢麻了”
  7. Meta宣布将关闭面部识别系统 删除超10亿用户面部扫描数据
  8. 国产特斯拉Model Y已开始向欧洲用户交付
  9. 苹果又遭集体诉讼,网友拍手:干得漂亮......
  10. 亚洲新首富出炉!富豪榜单大洗牌,马云3年来首次跌出中国前三