• Python+requests维持会话


    Python+requests维持会话

    一、使用Python+requests发送请求,为什么要维持会话?

      我们是通过http协议来访问web网页的,而http协议是无法维持会话之间的状态。比如说我们成功登录一个网站的后,去访问这个网站的其他页面的时候,登录状态会消失。所以导致页面刷新后就需要反复重新登录来维持会话。非常繁琐。所以我们需要通过cookies或者Session来维持会话。下面举个没有维持会话,请求响应失败的例子

    代码:

    import requests
    import json
    '''
    在成功登录平台后,在成员编号页面新增成员的请求
    '''
    Search_url='http://47.106.203.20:8000/car-oss/webapi/easyflow/datatable/queryresult'
    Search_par={
        "pageSize":10,
        "pageIndex":1,
        "orgname":"M1对讲",
        "pcNum":"95830",
        "watchImei":"",
        "name":"pc_watch_manage"
    }
    Search_header={
        'Content-Type':'application/json'
    }
    Search_cookie={
        'JSESSIONID':'3E2ED9359E53D31FBD13FE2ADE9D20D2'
    }
    r1 = requests.post(Search_url,data=json.dumps(Search_par),headers=Search_header)
    print(r1.text)

    运行结果:

    {"errorCode":"1009","errorMsg":"会话过期,或者未登录"}
    #因为没有维持会话,所以请求响应失败了

    二、如何维持会话

      维持会话有cookie和session 这2种方式,cookie和session都是将登录或者上一页面对应的会话信息存储起来,但是session不会保存服务器发给客户端的SessionID等信息。因为SessionID通常保存在cookie中。所以还是建议使用cookie维持会话

    1、使用cookie

    代码:

    import requests
    import json
    Search_url='http://47.106.203.20:8000/car-oss/webapi/easyflow/datatable/queryresult'
    Search_par={
        "pageSize":10,
        "pageIndex":1,
        "orgname":"M1对讲",
        "pcNum":"95830",
        "watchImei":"",
        "name":"pc_watch_manage"
    }
    Search_header={
        'Content-Type':'application/json'
    }
    Search_cookie={
        'JSESSIONID':'3E2ED9359E53D31FBD13FE2ADE9D20D2'
    }
    r1 = requests.post(Search_url,data=json.dumps(Search_par),headers=Search_header,cookies=Search_cookie)#在发送请求的时候带上了上一个对话的cookie
    print(r1.text)

    运行结果:

    {"result":true,"msg":"success","data":{"pageIndx":1,"totalSize":1,"pageSize":10,"totalPage":1,"list":[{"id":"2c9220956c99b744016d00a758356582","pcNum":"95830","pcName":"测试","pcPhoneNum":"22345","orgname":"M1对讲","watchImei":"11220"}]}}

    2、使用Session

    代码:

    import requests
    import json
    from requests import session
    '''
    登入平台
    '''
    login_url='http://XX.XXX.XXX.XX:端口号/car-oss/user/login.htm'
    login_par={
        "username":"yitop",
        "password":"f5235b0b3bdc7329466d9165bd563191"
    }
    login_header={
        'Content-Type':'application/json'
    }
    s = requests.session()#储存界面的会话信息,维持会话
    r1=s.post(login_url,data=json.dumps(login_par),headers=login_header)
    '''
    在新增成员信息页面执行查询操作
    '''
    Search_url='http://XX.XXX.XXX.XX:端口号/car-oss/webapi/easyflow/datatable/queryresult'
    Search_par={
        "pageSize":10,
        "pageIndex":1,
        "orgname":"M1对讲",
        "pcNum":"95830",
        "watchImei":"",
        "name":"pc_watch_manage"
    }
    Search_header={
        'Content-Type':'application/json'
    }
    r2 = s.post(Search_url,data=json.dumps(Search_par),headers=Search_header)
    print(r1.text)
    print('***************************')
    print(r2.text)

    也可以使用Python+requests来发送登录博客园平台,在页面查询信息的http请求来感受下cookie和session的具体用法

  • 相关阅读:
    ftp如果有文件夹直接建文件,没有创建文件夹
    jfinal相关
    jfinal多数据源
    创建maven项目多模块项目
    多线程分批处理list内的值
    内部类_常见的用途
    获取aplicationContext对象,从而获取任何注入的对象
    jquery表单验证
    monkeyrunner录制回放
    android稳定性测试
  • 原文地址:https://www.cnblogs.com/xswt/p/11468834.html
Copyright © 2020-2023  润新知