详解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 set常用操作函数集锦
Nov 15 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
基于python的ini配置文件操作工具类
Apr 24 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
对Django 转发和重定向的实例详解
Aug 06 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
Python os库常用操作代码汇总
Nov 03 Python
Python常用断言函数实例汇总
Nov 30 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
python 模拟在天空中放风筝的示例代码
Apr 21 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
2020最新CPU的性能排名
2020/04/02 数码科技
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python argv用法详解
2016/01/08 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
python读取图片任意范围区域
2019/01/23 Python
python中图像通道分离与合并实例
2020/01/17 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
消防安全承诺书
2014/05/22 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
针对吵架老公保证书
2015/05/08 职场文书
鸡毛信观后感
2015/06/11 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
MySQL5.7并行复制原理及实现
2021/06/03 MySQL