详解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中__init__和__new__的区别详解
Jul 09 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
TensorFlow变量管理详解
Mar 10 Python
Python3实现的简单验证码识别功能示例
May 02 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
python新手学习使用库
Jun 11 Python
Python使用Pygame绘制时钟
Nov 29 Python
Python使用Web框架Flask开发项目
Jun 01 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中用文本文件做数据库的实现方法
2008/03/27 PHP
也谈php网站在线人数统计
2008/04/09 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
Javascript函数的参数
2015/07/16 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
python mysqldb连接数据库
2009/03/16 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
Python多线程下载文件的方法
2015/07/10 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python实现时间序列可视化的方法
2019/08/06 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
户外宣传策划方案
2014/05/25 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
档案接收函格式
2015/01/30 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Python实现单例模式的5种方法
2021/06/15 Python