详解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中面向对象编程的相关知识
May 25 Python
Python 字典与字符串的互转实例
Jan 13 Python
django实现前后台交互实例
Aug 07 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
浅谈python数据类型及其操作
May 25 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
linux下php上传文件注意事项
2016/06/11 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
微信小程序 image组件遇到的问题
2019/05/28 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python类参数self使用示例
2014/02/17 Python
对python周期性定时器的示例详解
2019/02/19 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
乡镇干部十八大感言
2014/02/17 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
企业宗旨标语
2014/06/10 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
python中os.path.join()函数实例用法
2021/05/26 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server