requests中session的用法

正常情况下,我们想打开禅道的“组织”视图页面,是需要先在禅道的登录页面输入正确的用户名和密码点击登录,再切换到“组织”视图页面。

如果我们的python代码这样写的话,r1和r2的状态码都是200,但r2.text并不是我们想要的。这是因为,r1和r2请求相当于在2个不同的浏览器中,发出的两个请求,彼此是独立的,那么r2请求就相当于是在没有登录的情况下发出的请求。

import requests

paylod = {'account':'admin',
          'password':'e10adc3949ba59abbe56e057f20f883e'}
url01 = 'http://localhost:9000/zentao/user-login.html'
url02 = 'http://localhost:9000/zentao/company-browse.html'
r1 = requests.get(url01,params=paylod)
r2 = requests.post(url02)
print(r1.status_code)
print(r2.status_code)
print(r2.text)
那么如何解决这个问题呢
1、我们可以创建一个session对象来存储请求的缺省值,r2.text可以取到想要的值。

import requests

s=requests.session()
paylod = {'account':'admin','password':'e10adc3949ba59abbe56e057f20f883e'}
url01='http://localhost:9000/zentao/user-login-L3plbnRhby8=.html'
url02='http://localhost:9000/zentao/user-create-0.html'
r1=s.get(url01,params=paylod)
r2=s.post(url02,data=d)
print(r2.text)

2、可以直接加上auth认证,那么r2请求也可取到相应的值,而不需要登录。(用户名:admin,密码:123456)
import requests
from requests.auth import HTTPBasicAuth

url02 = 'http://39.106.90.48:9000/zentao/company-browse.html'
r2 = requests.post(url02,auth=HTTPBasicAuth('admin','123456'))
print(r2.status_code)
print(r2.text)

ps:水平有限,亲测有效,如果有错误,或者理解不到位的欢迎留言指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注