如何基于Python + requests实现发送HTTP请求


Posted in Python onJanuary 13, 2020

这篇文章主要介绍了如何基于Python + requests实现发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、在接口自动化测试过程中,存在两种情况:

一种是不需要鉴权的接口,可以直接访问的。

还有一种情况是需要鉴权才可以访问的接口。

这里我们通过Python + requests 实现这两种发送请求的方法

"""
============================
author:Treasure丶
time:2019/11/28
E-mail:1247814617@qq.com
发送Http请求的方法
============================
"""
import requests


class HttpRequest(object):
  """不记录任何的请求方法"""

  @classmethod
  def request(cls, method, url, data=None, headers=None): # 这里分别需要传人
    method = method.upper() # 这里将传入的请求方法统一大写,然后进行判断采用什么方法
    if method == 'POST':
      return requests.post(url=url, data=data, headers=headers)
    elif method == 'GET':
      return requests.get(url=url, params=data, headers=headers)
    return f"目前没有{method}请求方法,只有POST和Get请求方法!"
    # 指定位置传参的话,get方法里是叫params,和post方法里的不一样哦!


class HttpSession(object):
  """记录Session的方法"""
  def __init__(self):
    self.session = requests.session() # 初始化一个保存session的方法

  def request(self, method, url, data=None, headers=None):
    method = method.upper()
    if method == 'POST':
      return self.session.post(url=url, data=data, headers=headers)
    elif method == 'GET':
      return self.session.get(url=url, params=data, headers=headers)

  def close(self):
    """断开session连接的方法"""
    self.session.close()


if __name__ == '__main__':
  http = HttpSession()
  http_one = http.request(method='post', url=r'http://test.lemonban.com/futureloan/mvc/api/member/login',
              data={"mobilephone": '17685598021', "pwd": '123456'}).json() # 登录接口
  http_two = http.request(method='post', url=r'http://test.lemonban.com/futureloan/mvc/api/member/recharge',
              data={"mobilephone": "17685598021", "amount": 50000}).json() # 充值接口
  print(http_one)
  print(http_two)

运行结果:

http_one = {'status': 1, 'code': '10001', 'data': None, 'msg': '登录成功'}
http_two = {'status': 1, 'code': '10001',



'data': {'id': 133171, 'regname': '歪歪', 'pwd': 'E10ADC3949BA59ABBE56E057F20F883E', 'mobilephone': '17685598021',
     



'leaveamount': '647200.00', 'type': '1', 'regtime': '2019-09-01 12:28:03.0'}, 'msg': '充值成功'}

这里用充值接口来举例,所以我们直接使用的是记录Session信息的HTTP请求方法,

因为充值接口是不可以直接请求成功的,是需要用户先登录,然后获取登录后的Session信息,然后将用户信息和Session信息一同发送给充值接口,才能充值成功!否则会提醒先登录。

我们这里是将返回数据以json格式显示,看起来像字典,也比较清晰!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python函数嵌套实例
Sep 23 Python
python中文编码问题小结
Sep 28 Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 Python
python 获取剪切板内容的两种方法
Nov 28 Python
Python字符串的15个基本操作(小结)
Feb 03 Python
python+tifffile之tiff文件读写方式
Jan 13 #Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 #Python
手动安装python3.6的操作过程详解
Jan 13 #Python
Python中join()函数多种操作代码实例
Jan 13 #Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 #Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 #Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 #Python
You might like
一棵php的类树(支持无限分类)
2006/10/09 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php 用sock技术发送邮件的函数
2007/07/21 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
Django分组聚合查询实例分享
2020/04/29 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
python 实现汉诺塔游戏
2020/11/28 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
如何判断计算机可能已经中马
2013/03/22 面试题
vue+django实现下载文件的示例
2021/03/24 Vue.js
幼儿园元旦活动感言
2014/03/02 职场文书
高三高考决心书
2014/03/11 职场文书
保密承诺书
2014/03/27 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis