详解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用GET方法上传文件
Mar 10 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
python中property和setter装饰器用法
Dec 19 Python
pycharm安装及如何导入numpy
Apr 03 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
Python绘图之柱形图绘制详解
Jul 28 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
Python判断字符串是否为合法标示符操作
Sep 03 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中一个有意思的日期逻辑处理
2012/03/25 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python中range()与xrange()用法分析
2016/09/21 Python
详解python 发送邮件实例代码
2016/12/22 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
python简单实现插入排序实例代码
2020/12/16 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
企业员工集体活动方案
2014/08/17 职场文书
劳资员岗位职责
2015/02/13 职场文书
百家讲坛观后感
2015/06/12 职场文书
农村老人去世追悼词
2015/06/23 职场文书