详解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的Django中django-userena组件的简单使用教程
May 30 Python
详解Python中dict与set的使用
Aug 10 Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
python3.x实现base64加密和解密
Mar 28 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
超详细Python解释器新手安装教程
May 10 Python
python实现手机推送 代码也就10行左右
Apr 12 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
php数组编码转换示例详解
2014/03/11 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
2013/05/19 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
Python3进制之间的转换代码实例
2019/08/24 Python
python清空命令行方式
2020/01/13 Python
研究生求职推荐信范文
2013/11/30 职场文书
预备党员公开承诺书
2014/05/28 职场文书
农民工讨薪标语
2014/06/26 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
Flink 侧流输出源码示例解析
2022/09/23 Servers