当前位置: 首页 > article >正文

Requests库对session的支持

场景:如何获取登录时响应消息中的sessionid,以及如何在后续请求中把sessionid添到cookie中

Requests库提供了一个Session类,通过requests库中的session对象,requests库会自动帮我们保存服务端返回的cookie数据(set-cookie里的内容),也会在HTTP发出请求时自动在消息头中放入cookie数据。

用py模拟客户端接收响应消息:

import requests

# 打印HTTP响应消息的函数
def printResponse(response):
    print('\n\n-------- HTTP response * begin -------')
    print(response.status_code) #打印响应状态码

    for k, v in response.headers.items():
        print(f'{k}: {v}')

    print('')

    print(response.content.decode('utf8')) # 获取响应消息体并转换成字符串
    print('-------- HTTP response * end -------\n\n')


# 创建 Session 对象
s = requests.Session()

# 通过 Session 对象发送http请求但是是添加资源信息 ; urlencoded格式构建请求消息体
response = s.post("http://127.0.0.1/api/mgr/signin",
       data={
           'username': 'byhy',
           'password': '88888888'
       })

printResponse(response) 

# 通过 Session 对象发送http请求,但是是从服务端获取资源 (模拟列出所有客户) ; 构建请求之URL参数
response = s.get("http://127.0.0.1/api/mgr/customers",
      params={
          'action'    :  'list_customer',
          'pagesize'  :  10,
          'pagenum'   :  1,
          'keywords'  :  '',
      })

printResponse(response) # 注意这里是请求消息发出去了,打印的是响应消息

1.python中的items()方法:

response得到的一般是json类型的字符串,response.headers.items()在字典对象后面加上.items();就会得到一个包含字典中所有键值对的视图对象,然后用循环遍历返回的这个视图对象。

参考:python中字典的items()函数_python中items()函数-CSDN博客

2.python中的print(f''):

格式化字符串语法,允许在字符串中嵌入表达式,在f''中的{}内可以放入任何有效的py表达式;在print函数执行时,表达式会被求值,并放入到字符串的相应位置。

参考自:python中的print(f‘‘)具体用法_python print f-CSDN博客

本文参考自: requests库 和 session - 白月黑羽 (byhy.net)


http://www.kler.cn/news/293471.html

相关文章:

  • PHP 项目流水线部署与错误问题解决
  • U盘数据危机应对:详解文件或目录损坏无法读取的恢复之道
  • SpringMVC启动与请求处理流程解析
  • 将网页保存为PDF---不分页
  • GIT | git提交注释自动添加信息头
  • echarts动态切换数据渲染(vue3 + echarts)
  • 5G移动网络运维实验(训)室解决方案
  • 逻辑回归与线性回归的目标函数和应用场景比较
  • 坐牢第三十六天(QT)
  • iOS——Block与内存管理
  • Kafka 实战演练:创建、配置与测试 Kafka全面教程
  • 《Python爬虫逆向实战》加密方法远程调用(RPC)
  • TRIZ在充电桩安全中的应用探究
  • Java 入门指南:Java 并发编程 —— Fork/Join 框架 实现任务的拆分与合并
  • 探索PDF的奥秘:pdfrw库的神奇之旅
  • 2024,中国服务器操作系统迎云智主升浪
  • 鸿蒙开发5.0【高级图表实现】 解决方案
  • c++的类和对象
  • vue-seamless-scroll(二)点击事件
  • 为什么深度学习用GPU而不是CPU
  • electron 客户端 windows linux(麒麟V10)多系统离线打包 最新版 <二>
  • FPGA开发:Verilog基础语法
  • 如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群
  • FFMPEG -- 音频开发
  • 初识命名空间
  • S7-PLC
  • 安装win7鼠标键盘不能动原因分析及解决办法
  • 【AI学习】聊两句深度学习的目标函数
  • 计算机网络27——Linux1
  • 黑马JavaWeb开发笔记14——Tomcat(介绍、安装与卸载、启动与关闭)、入门程序解析(起步依赖、SpringBoot父工程、内嵌Tomcat)