详解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程序的方法
Apr 21 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python getopt模块使用实例解析
Dec 18 Python
Python解析多帧dicom数据详解
Jan 13 Python
Python虚拟环境venv用法详解
May 25 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
python定义类的简单用法
Jul 24 Python
浅析python中的del用法
Sep 02 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 07 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
理解javascript对象继承
2016/04/17 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
python实现哈希表
2014/02/07 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
python+django快速实现文件上传
2016/10/24 Python
Python批量查询域名是否被注册过
2017/06/21 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
大学生自我鉴定范文
2013/12/28 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
校园安全标语
2014/06/07 职场文书
整改报告怎么写
2014/11/06 职场文书
新员工辞职信范文
2015/05/12 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle