详解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利用装饰器进行运算的实例分析
Aug 04 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
pandas数据处理进阶详解
Oct 11 Python
python中seaborn包常用图形使用详解
Nov 25 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
python调用百度AI接口实现人流量统计
Feb 03 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
python单元测试之pytest的使用
Jun 07 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中empty is_null和isset的测试
2013/06/29 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
Python ZipFile模块详解
2013/11/01 Python
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
Python下的twisted框架入门指引
2015/04/15 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
python 日志 logging模块详细解析
2020/03/31 Python
营销与策划专业毕业生求职信
2013/11/01 职场文书
师德师风个人反思
2014/04/28 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Python中的套接字编程是什么?
2021/06/21 Python
Java基础-封装和继承
2021/07/02 Java/Android
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS