详解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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
彻底理解Python中的yield关键字
Apr 01 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Python数据库封装实现代码示例解析
Sep 05 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
Python Pygame实战之塔防游戏的实现
Mar 17 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
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php while循环得到循环次数
2013/10/26 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
Python3字符串学习教程
2015/08/20 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
python创建文本文件的简单方法
2020/08/30 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
宝信软件JAVA工程师面试经历
2012/08/19 面试题
法学院方阵解说词
2014/01/29 职场文书
暑假学习心得体会
2014/09/02 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
初中作文评语
2014/12/25 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
正规借条模板
2015/05/26 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
校园运动会广播稿
2015/08/19 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技