zoukankan      html  css  js  c++  java
  • requests.session()发送请求 和使用requests直接发送请求的区别

    requests.session()发送请求 和使用requests直接发送请求的区别

    一、Session

    在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

    会话能让我们在跨请求的时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie信息。

    1、创建session对象
    session = requests.session()

    得到session对象之后,就可以调用该对象中方法来发送请求了。

    response1 = session.get(url,params,headers)
    response2 = session.post(url,data,json,headers)

    通过session来发送get、post、delete、put等请求并获取响应。

    二、requests

    requests是Python的一个第三方的库,主要用于发送网络请求,比如get、post等请求已达到获取网络响应的目的

    语法如下:

    import requests
    response1 = requests.get(url,params,headers,cookies) # 发送get网络请求
    response2 = requests.post(url,data,json,headers,cookies) # 发送post网络请求
    # put、delete等请求方法类似

    三、session对象和requests两种方法发送的请求的区别:

    1、场景
    1. 登陆某商城
    2. 查询我的订单数据
    2、业务代码分析
    1. 首先这里涉及到两个接口,一个“登陆接口”,另外一个是“查询订单”的接口。
    2. 常规操作是我们 通过调用登陆接口 来获取响应的 cookie信息。
    3. 然后拿这个 cookie信息作为下一次请求的参数(cookie带有当前登陆人的信息)来请求 查询订单的接口

    常规代码如下:

    # 以下代码纯为了举例,没有效果的伪代码
    import requests
    # 登陆接口
    response1 = requests.get(url_login,params,headers)
    # 获取cookies信息
    cookies = response.cookies
    # 得到的cookies 是一个字典类型
    cookie = cookies.get("cookies的key")
    # 请求 查询接口
    response2 = requests.get(search_url,params,headers,cookies=cookie)
    # 查看查询响应的结果
    response2.json()

    使用session代码如下:

    # 以下代码纯为了举例,没有效果的伪代码
    import requests
    # 获取 session对象
    session = requests.session()
    # 登陆接口
    response1 = session.get(url_login,params,headers)
    # 请求 查询接口
    response2 = session.get(search_url,params,headers)
    # 查看查询响应的结果
    response2.json()

    补充知识点:
    可以从请求方法的返回值response中可以获取的内容:

    response.status_code   状态码
    response.url     请求url
    response.encoding     查看响应头部字符编码
    response.cookies     cookie信息
    response.headers     头信息
    response.text     文本形式的响应内容
    response.content     二进制字节形式的响应内容
    response.json()     JSON形式的响应内容(其实就是dict字典类型)

    转载:https://blog.csdn.net/qq_25986923/article/details/105332640?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

  • 相关阅读:
    Struts2学习笔记《三》
    《Shiro框架》shiro学习中报错解决方法
    android
    MAC 设置环境变量path的几种方法
    利用ant脚本 自动构建svn增量/全量 系统程序升级包
    Jenkins2 插件 Pipeline+BlueOcean 实现持续交付的初次演练
    Jenkins2 实现持续交付初次演练(MultiJob,Pipeline,Blue Ocean)
    jenkins2 -pipeline 常用groovy脚本
    jenkins2 pipeline介绍
    scala学习(1)----map和flatMap的区别
  • 原文地址:https://www.cnblogs.com/bugoobird/p/13566089.html
Copyright © 2011-2022 走看看