详解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脚本来实现最简单的FTP下载的教程
May 04 Python
Python写的一个简单监控系统
Jun 19 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python使用剪切板的方法
Jun 06 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
python hook监听事件详解
Oct 25 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
python实现猜拳小游戏
Apr 05 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 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中使用gd库实现下载网页中所有图片
2015/05/12 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
python实现简单多人聊天室
2018/12/11 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
django ORM之values和annotate使用详解
2020/05/19 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
实习生自我鉴定范文
2013/12/05 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
企业领导对照检查材料
2014/08/20 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
民事起诉状范文
2015/05/19 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android