python-调用接口请求实现登录状态保持

cookies是什么

import requests
from urllib import request
from http import cookiejar
from requests.cookies import RequestsCookieJar

#什么是cookies
cj = cookiejar.CookieJar()
rcj = RequestsCookieJar()
print(cj)
print(rcj)

s = requests.session()
res = s.get(url='http://127.0.0.1:9000/verify')
resrcj = res.cookies
resrcj.set('shuzf', '449258746')
resrcjdict = res.cookies.get_dict()
print(resrcj)
print(resrcjdict)

 

 cookies、Session登录保持

import requests
url1="http://127.0.0.1:9000/login"
url2="http://127.0.0.1:9000/verify"
json ={'username': '15669910105', 'password': 'a123456'}
#cookies
res1 = requests.post(url=url1 ,json=json)            #第一个接口,登录
res2 = requests.get(url=url2 ,cookies=res1.cookies)  #第二个接口,获取用户信息
print(res1.text)
print(res2.text)

#Session 继承
s = requests.Session()
res3 = s.post(url=url1 ,json=json )                #第一个接口,登录
res4 = s.get(url=url2 ,headers=None,cookies=None)  #第二个接口,获取用户信息,即便headers和cookies传空依旧保持
print(res3.text)
print(res4.text)

 

 类继承requests.Session

#类继承requests.Session,则该类的class.post(),get(),request()方法具有保持登录,重写方法也具有保存登录
from common.baseRquest import BaseRquest
import time
url1="http://42.192.162.8:9000/login"
url2="http://42.192.162.8:9000/verify"
json ={'username': '15669910105', 'password': 'a123456'}
req=BaseRquest()

req.cookies.clear()
res1 = req.post(url=url1,json=json )                #第一个接口,登录
res2 = req.get(url=url2,headers=None,cookies=None)  #第二个接口,获取用户信息,即便headers和cookies传空依旧保持
print(res1.text)
print(res2.text)


req.cookies.clear()
time.sleep(2)
res3 = req.request(method='post',url=url1 ,json=json)                  #第一个接口,登录
res4 = req.request(method='get',url=url2 ,headers=None,cookies=None)   #第二个接口,获取用户信息,即便headers和cookies传空依旧保持
print(res3.text)
print(res4.text)


req.cookies.clear()
time.sleep(2)
res5 = req.post_requests(url=url1,json=json)                  #第一个接口,登录
res6 = req.get_requests(url=url2,headers=None,cookies=None)   #第二个接口,获取用户信息
print(res5.text)
print(res6.text)


req.cookies.clear()
time.sleep(2)
res7 = req.post_requests(url=url1 ,json=json)            #第一个接口,登录
req.cookies.clear()
res8 = req.get_requests(url=url2,headers=None,cookies=None)  #第二个接口,获取用户信息
print(res7.text)
print(res8.text)

 

 

写cookie_dict保持登录

#写cookie_dict使其保持登录
import requests
url1 = "http://127.0.0.1:9000/login"
url2 = "http://127.0.0.1:9000/verify"
json = {'username': '15669910105', 'password': 'a123456'}
s = requests.Session()

res3 = requests.post(url=url1 ,json=json)    #第一个接口,登录
cookie_dict = res3.cookies.get_dict()

requests.utils.add_dict_to_cookiejar(s.cookies, cookie_dict)  #方法一、初始cookies
#s.cookies.update(cookie_dict)                                #方法二、更新cookies
#s.cookies = requests.utils.cookiejar_from_dict(cookie_dict)  #方法三、cookiejar_from_dict(),将 dict 转换成一个 RequestsCookieJar 并赋值

res4 = s.get(url=url2 ,headers=None,cookies=None)  #第二个接口,获取用户信息
print(res3.text)
print(res4.text)

 

处理报错

s = requests.session()
s.keep_alive = False   #处理报错报错HTTPConnectionPool Max retires exceeded

 

posted @ 2019-10-25 09:43  南方的墙  阅读(578)  评论(0编辑  收藏  举报