在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息,
会造成识别失败。 如一些需要用户登录以后才能访问的页面。
import requests myaddress_url='http://xxx.com/api/v1/myaddress' myaddress=requests.get(myaddress_url) print(myaddress.status_code) print(myaddress.text) -----结果----- 401 未授权的访问, 请重新登陆
在用户登录的时候,服务器端会向请求方发送一些资料,存在本地,例如cookies,在接下来的某些请求中,都需要带上cookies,服务器通过cookies内容来辨别
使用者。
那么在python中,是如何在请求中带入cookies信息的呢,看下面:
import requests login_url='http://xxx.com/api/v1/user/login' userinfo={"ua":"username","pw":"password"} login=requests.post(login_url,json=userinfo) cookies=login.cookies #获取登录后的cookies内容 myaddress_url='http://xxxx/api/v1/myaddress' myaddress=requests.get(myaddress_url,cookies=cookies) #在请求中带入cookies print(myaddress.status_code) print(myaddress.text) -----结果----- 200 {........}
带入了cookies内容后,可以正常的获取到想要的响应内容。
在此处虽然可以请求成功,但需要获取到cookies内容及每次都要发送cookies内容,不是非常方便,因此,接下来我们介绍另外一种方法
使用session类来发送请求:
import requests login_url='http://xxxx/api/v1/user/login' userinfo={"ua":"username","pw":"password"} myaddress_url='http://xxx/api/v1/myaddress' test_session=requests.session() #使用session类生成一个对象 login=test_session.post(login_url,json=userinfo) myaddress=test_session.get(myaddress_url) print(myaddress.status_code) print(myaddress.text) -----结果----- 200 {...}
至此,cookies相关的问题解决