import json
import aiohttp
import asyncio
async def httpPost(session,url,data,headers=None,cookies=None):
async with session.post(url=url,data=data,headers=headers,cookies=cookies) as res:
assert res.status == 200
try:
#此处为了方便返回结果为json,注意content_type类型要与请求返回的一致
resData = await res.json(content_type='application/json',encoding='utf-8')
return resData
except Exception as e:
MyLog.error(e)
resData = await res.text()
return json.loads(resData)
async def httpGet(session,url,data,headers=None,cookies=None):
async with session.get(url=url,data=data,headers=headers,cookies=cookies) as res:
assert res.status == 200
try:
resData = await res.json(content_type='application/json',encoding='utf-8')
return resData
except Exception as e:
MyLog.error(e)
resData = await res.text()
return json.loads(resData)
#定义一个方法调用上面的异步请求get和post方法
async def go(dev,type):
headers = {
'deviceId': dev,
'mac': "bc:1c:81:93:ad:10",
'app_ver': '1.0',
'resolution': '1080*720,1920*1080',
'resolution_type': type,
'dev_type': '3',
'Content-Type': 'application/json'
}
#创建一个aiohttp的异步请求的ClientSession
async with aiohttp.ClientSession() as session:
url_online = ''.join([host, online])
data_online_param = json.dumps(data_online)
headers['sign']= get_sign(data_online)
MyLog.info("设备{0}上线请求参数:{1}".format(dev,data_online))
res_online = await http_request.httpPost(session=session,url=url_online,data=data_online_param,headers=headers)
MyLog.info("设备{0}上线响应结果{1}".format(dev,res_online))
if 'msg' in res_online.keys() and res_online['msg'] == 'success':
basePlayid = res_online['data']['playlist_id']
basePlayType = res_online['data']['playlist_type']
else:
MyLog.error("设备{0}上线请求基础播放列表异常,响应参数{1}".format(dev,res_online))
return