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的具体用法

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM