详解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使用socket向客户端发送数据的方法
Apr 29 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
django 装饰器 检测登录状态操作
Jul 02 Python
python3字符串输出常见面试题总结
Dec 01 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 截取字符串专题集合
2010/08/19 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
js word表格动态添加代码
2010/06/07 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
el-form 多层级表单的实现示例
2020/09/10 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
django删除表重建的实现方法
2019/08/28 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
求职自荐信怎么写
2014/03/06 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
阳光体育活动总结
2014/04/30 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
zabbix配置nginx监控的实现
2022/05/25 Servers