详解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 相关文章推荐
python二叉树的实现实例
Nov 21 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
Python实现读取文件最后n行的方法
Feb 23 Python
python算法演练_One Rule 算法(详解)
May 17 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python实现员工管理系统
Jan 11 Python
python 对象和json互相转换方法
Mar 22 Python
对python文件读写的缓冲行为详解
Feb 13 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
在keras下实现多个模型的融合方式
May 23 Python
Python爬取某拍短视频
Jun 11 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
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
Laravel find in set排序实例
2019/10/09 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
Git命令之分支详解
2021/03/02 PHP
javascript document.images实例
2008/05/27 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
js图片预加载示例
2014/04/30 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
原生js实现放大镜
2017/02/20 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
python实现识别相似图片小结
2016/02/22 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
开放系统互连参考模型
2016/06/29 面试题
证券期货行业个人的自我评价
2013/12/26 职场文书
公安学专业求职信
2014/07/27 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
python中的plt.cm.Paired用法说明
2021/05/31 Python