详解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 实现自动远程登陆scp文件实例代码
Mar 13 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
Python中dict和set的用法讲解
Mar 28 Python
python操作日志的封装方法(两种方法)
May 23 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
python3 pillow模块实现简单验证码
Oct 31 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
Feb 26 Python
Django在Model保存前记录日志实例
May 14 Python
Python os库常用操作代码汇总
Nov 03 Python
k-means & DBSCAN 总结
Apr 27 Python
Pygame Draw绘图函数的具体使用
Nov 17 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常用字符串处理函数实例分析
2014/11/22 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Django中的Signal代码详解
2018/02/05 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Python实现时间序列可视化的方法
2019/08/06 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
生产车间班组长岗位职责
2014/01/06 职场文书
记者岗位职责
2014/01/06 职场文书
领班岗位职责范文
2014/02/06 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
谢师宴家长答谢词
2015/09/30 职场文书