详解Python 重学requests发起请求的基本方式


Posted in Python onFebruary 07, 2020

安装相关模块

pip install requests requests-toolbelt

代码实例

import requests
import json
from PIL import Image
from io import BytesIO
from requests_toolbelt import MultipartEncoder
'''
使用 requests 请求返回的 response 注意事项
response.text 获得响应结果的字符串类型
response.content 获得响应结果的bytes(二进制数据流类型,可用来处理返回的二进制文件流) 如果是图片的话可以使用 Image.open(BytesIO(r.content)).show() 打开查看
response.status_code 获得响应结果的状态码
response.headers 获得响应结果的请求头
response.encoding 获得响应结果的编码
response.url 获得请求的url
response.json() 将获得响应结果转换成 json.loads(str) 后的结果,在python中得到字典类型
'''


def get_request(url, params, headers=None):
  '''
  发起GET请求
  :url 请求的地址 字符串类型
  :params 请求的参数 字典类型
  :headers 定义请求头 字典类型
  '''
  return requests.get(url=url, params=params, headers=headers)


def post_www_form_request(url, www_form, headers=None):
  '''
  发起POST请求 发送x-www-form-urlencoded请求体
  :url 请求的地址 字符串类型
  :www_form x-www-form-urlencoded请求体 字典类型
  :headers 定义请求头 字典类型
  '''
  return requests.post(url=url, data=www_form, headers=headers)


def post_form_data_request(url, form_data, headers=None):
  '''
  发起POST请求 发送form-data请求体
  :url 请求的地址 字符串类型
  :form_data form-data请求体 字典类型
  :headers 定义请求头 字典类型
  '''
  default_headers = {'Content-Type': 'multipart/form-data'}
  if headers:
    default_headers.update(headers)
  m = MultipartEncoder(fields=form_data)
  default_headers['Content-Type'] = m.content_type
  print(default_headers)
  return requests.post(url=url, data=m, headers=default_headers)


def post_json_data_request(url, json_data, headers=None):
  '''
  发起POST请求 发送json请求体
  :url 请求的地址 字符串类型
  :json_data json类型请求体 字典类型
  :headers 定义请求头 字典类型
  '''
  # 方式一
  # default_headers = {'Content-Type': 'application/json'}
  # if headers:
  #   default_headers.update(headers)
  # return requests.post(url=url, data=json.dumps(json_data), headers=default_headers)
  # 方式二
  return requests.post(url=url, json=json_data, headers=headers)


def post_files_request(url, files, headers=None):
  '''
  发起POST请求 请求体为文件
  :url 请求的地址 字符串类型
  :files 文件类型请求体 文件类型
  :headers 定义请求头 字典类型
  '''
  # 携带请求头
  default_headers = {'Authorization': 'bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiZXhwIjoxMDIxNTk5MjgwMX0.GFs_smaKQ55taYgctbDzw2ooOdKNuy-HqobHXB2nE1o'}
  if headers:
    default_headers.update(headers)
  return requests.post(url=url, files=files, headers=default_headers)


if __name__ == '__main__':
  # 测试GET请求
  # print(get_request('http://127.0.0.1:9000/wechat/good/', {'page': 1, 'page_size': 2}).json())
  # print(post_www_form_request('http://127.0.0.1:9000/mobilelogin/', {'mobile': '17316280277', 'code': '1234'}).json())
  # (('mobile', '17316280277'), ('code', '1234'))
  # print(post_form_data_request('http://127.0.0.1:9000/mobilelogin/', {'mobile': '17316280277', 'code': '1234'}).json())
  # print(post_json_data_request('http://127.0.0.1:9000/mobilelogin/', {'mobile': '17316280277', 'code': '1234'}).json())
  print(post_files_request('http://127.0.0.1:9000/uploadfile/', {'file': open('img1.png', 'rb'), 'file1': open('1.xls', 'rb')}).json())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
python网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
Python使用稀疏矩阵节省内存实例
Jun 27 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python多进程同步简单实现代码
Apr 27 Python
python实现决策树分类算法
Dec 21 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
对tensorflow 中tile函数的使用详解
Feb 07 #Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 #Python
Tensorflow分批量读取数据教程
Feb 07 #Python
python统计字符的个数代码实例
Feb 07 #Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 #Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
Feb 07 #Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 #Python
You might like
有关php运算符的知识大全
2011/11/03 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
常用python爬虫库介绍与简要说明
2020/01/25 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
优秀士兵先进事迹
2014/02/06 职场文书
主题婚礼策划方案
2014/02/10 职场文书
离婚上诉状范文
2015/05/23 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python