json有对象和数组两种结构,有字符串,数字,逻辑值,空值,四种数据类型
口诀1:用大括号{}表示对象,对象是由属性组成的,属性是由键值对组成的,键值对用冒号隔开,属性之间用逗号隔开。键必须要用双引号引起来
口诀2:用中括号[]表示数组,数组由单独的值组成
口诀3:json可以嵌套
token
token是由服务器产生的,存在服务器内存或硬盘中
1 #!/usr/bin/env python3 2 # -*- coding: UTF-8 -*- 3 """ 4 @author:zhaojian 5 @file:login.py 6 @time:2020/11/18 7 """ 8 import requests 9 #MD5加密 10 import hashlib 11 def get_md5(psw): 12 ''' 13 :param psw: 14 :return: 15 ''' 16 md5 = hashlib.md5()#实例化对象 17 md5.update(psw.encode('utf-8'))#加密操作 18 return md5.hexdigest()#调用hexdigest,获取加密结果 19 20 21 22 def login(inData,getToken=True): 23 ''' 24 25 :param inData: 26 :param getToken: 27 :return: 28 ''' 29 url = "http://121.4.1.39:8082/account/sLogin" 30 inData['password'] = get_md5(inData['password']) 31 payload = inData 32 resp = requests.post(url,data=payload) 33 # print(resp.request.body) 34 # print(resp.request.headers) 35 # print(resp.request.url) 36 # print(resp.text) 37 ''' 38 cookie的获取 39 1.print(resp.cookies)#原生态提取cookies的方法,直接使用 40 2.对cookie进行重新封装,再使用 41 print(resp.cookies[sessionid])#直接提取cookie中的sessionid值 42 43 return resp.cookies,resp.cookies[sessionid] 44 #1.原生态使用方法 45 cookie1 = login({'username':'sq0178','password':'a55427'})[0] #因为上面return了两个返回值,所以要写下标为0,才能取到值 46 res1 = requests.post(url,cookies=cookie1) 47 #2.方案2 48 sessionid2 = login({'username':'sq0178','password':'a55427'})[1] 49 cookie2 = {'sessionid':sessionid2} 50 res2 = requests.post(url,cookies=cookie2) 51 ''' 52 if getToken: 53 #获取响应是个字典 ,resp.json()方法,它的结果是一个字典 54 return resp.json()['data']['token'] 55 else: 56 return resp.json()#获取接口响应,只有明确响应是json格式时才能用这个方法 57 58 59 if __name__ == '__main__': 60 print(login({'username':'0178','password':'5'}))
cookie
cookie里一般是带有sessionId的
cookie是分站点的,站点之间的cookie是相互独立的
浏览器的cookie是保存在浏览器某个位置的
服务器端可以通过:响应头中的set-Cookie参数,对客户端的Cookie进行管理
浏览器每次请求,都会把该站点的cookie发送给服务器
登录一般需要cookie和Session配合使用
sessionId
sessionId是一个对象,是服务器产生的,保存在服务器内存中
sessionId是session对象的一个属性,是全局唯一的,永远不会重复的
接口自动化遇到https的url的话,要在参数那加个verify = False