详解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格式化字符串实例总结
Sep 28 Python
python学习数据结构实例代码
May 11 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
书单|人生苦短,你还不用python!
Dec 29 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python实现简单坦克大战
Mar 27 Python
学习Python需要哪些工具
Sep 04 Python
Python中常见的导入方式总结
May 06 Python
python使用shell脚本创建kafka连接器
Apr 29 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
在JavaScript中调用php程序
2009/03/09 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP 无限级分类
2017/05/04 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
js活用事件触发对象动作
2008/08/10 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
理解javascript回调函数
2014/12/28 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
js实现分割上传大文件
2016/03/09 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
python 获取本机ip地址的两个方法
2013/02/25 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
Python八皇后问题解答过程详解
2019/07/29 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
pytorch标签转onehot形式实例
2020/01/02 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
软件测试工程师笔试题带答案
2015/03/27 面试题
助人为乐表扬信范文
2014/01/14 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
门面租赁合同范文
2019/08/06 职场文书
python随机打印成绩排名表
2021/06/23 Python