详解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抓取网页内容示例分享
Feb 24 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
python开发游戏的前期准备
May 05 Python
通过实例学习Python Excel操作
Jan 06 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
如何利用python 读取配置文件
Jan 06 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
深入php数据采集的详解
2013/06/02 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
JS随机密码生成算法
2019/09/23 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
python批量替换页眉页脚实例代码
2018/01/22 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
初任培训自我鉴定
2013/10/07 职场文书
致接力运动员广播稿
2014/02/17 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python