详解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运行的17个时新手常见错误小结
Aug 07 Python
python fabric使用笔记
May 09 Python
python中threading超线程用法实例分析
May 16 Python
Python写入CSV文件的方法
Jul 08 Python
python日志记录模块实例及改进
Feb 12 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
python 对字典按照value进行排序的方法
May 09 Python
Python使用configparser库读取配置文件
Feb 22 Python
python中数据库like模糊查询方式
Mar 02 Python
Python jieba库分词模式实例用法
Jan 13 Python
Django路由层如何获取正确的url
Jul 15 Python
Python3.10的一些新特性原理分析
Sep 15 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的分页功能
2007/03/21 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
基于pandas数据样本行列选取的方法
2018/04/20 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
最热门的自我评价
2013/12/30 职场文书
学生打架检讨书
2014/10/20 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
企业投资意向书
2015/05/09 职场文书
家庭经济困难证明
2015/06/23 职场文书
食堂管理制度范本
2015/08/04 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
如何写好开幕词?
2019/06/24 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
Python中with上下文管理协议的作用及用法
2022/03/18 Python
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电