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