1. 调用登陆态接口并解析返回登陆态,views.py
# 调用登陆态接口
def project_login_send_for_other(project_id):
# 第一步,获取数据
login_api = DB_login.objects.filter(project_id=project_id)[0]
login_method = login_api.api_method
login_url = login_api.api_url
login_host = login_api.api_host
login_header = login_api.api_header
login_body_method = login_api.body_method
login_api_body = login_api.api_body
login_response_set = login_api.set
# 第二步,发送请求
try:
headers = json.loads(login_header) # 处理header
except:
return HttpResponse('请求头不符合json格式!')
try:
response = api_send_basic(login_method, login_host, login_url, headers, login_body_method, login_api_body)
res = response.json()
# 第三步,对返回值进行提取
get_res = {} # 声明提取结果存放
for i in login_response_set.split('\n'):
if i == "":
continue
else:
i = i.replace(' ', '')
key = i.split('=')[0] # 拿出key
path = i.split('=')[1] # 拿出路径
value = res
for j in path.split('/')[1:]:
value = value[j]
get_res[key] = value
return get_res
except Exception as e:
return {}
2. 回到api_send函数中,调用这个新登陆态请求for_other函数
if ts_login.lower() == 'yes':
login_response = project_login_send_for_other(project_id=DB_apis.objects.filter(id=api_id)[0].project_id)
else:
pass
print(login_response)
重启服务,看输出得到的登陆态参数:
3. 插入到url、header、body中
url:
# 插入登陆态字段
## url
if '?' not in url:
url += '?'
for i in login_res.keys():
url += i + '=' + login_res[i] + '&'
else:
for i in login_res.keys():
url += '&' + i + '=' + login_res[i]
print(url)
header+body,此处选择这个,不用url:
不能直接=body,否则会执行不了方法2