详解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调用C# Com dll组件实战教程
Oct 12 Python
PyQt5实现下载进度条效果
Apr 19 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
python处理大日志文件
Jul 23 Python
Python列表的切片实例讲解
Aug 20 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
详解python itertools功能
Feb 07 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
python中复数的共轭复数知识点总结
Dec 06 Python
教你怎么用python selenium实现自动化测试
May 27 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
php防止sql注入的方法详解
2017/02/20 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
Python进行统计建模
2020/08/10 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
美德好少年事迹材料
2014/01/19 职场文书
医药销售自我评价200字
2014/09/11 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书