zoukankan      html  css  js  c++  java
  • 异步请求,登录带验证码

    登录--异步发请求--退出

    import asyncio
    import aiohttp
    
    
    async def GET_CAPTCHA_JPG(session):
        """
        获取验证码图片,并保存在本地
        """
        async with session.get(url="http://192.168.112.150/api/v1.0/auth/sso/login/kaptcha",
                               params={"time": "null"}) as resp:
            with open(file="CAPTCHA.jpg", mode="wb") as fd:
                while True:
                    chunk = await resp.content.read(1024)
                    if not chunk:
                        break
                    fd.write(chunk)
    
    
    async def login(session):
        """
        登录系统
        验证码输入CAPTCHA.jpg的内容
        """
        await GET_CAPTCHA_JPG(session)
        print("请输入验证码:", end="")
        captcha = input()
        url = "http://192.168.112.150/api/v1.0/auth/sso/login"
        data = {
            "imgCaptcha": captcha,
            "password": "1234abcd",
            "username": "wangyangzhi"
        }
        # 登录
        async with session.post(url=url, json=data) as resp:
            ret = await resp.json()
            print("登录: ", ret["message"])
    
    
    async def logout(session):
        """
        退出系统
        """
        url = "http://192.168.112.150/api/v1.0/auth/sso/logout"
        # 退出
        async with session.post(url=url) as resp:
            ret = await resp.json()
            print("退出: ", ret["message"])
    
    
    async def get_info1(session):
        """
        业务代码1
        """
        async with session.get(url="http://192.168.112.150/api/v1.0/manage/user/getcreat") as resp:
            ret = await resp.json()
            return ret
    
    
    async def get_info2(session):
        """
        业务代码2
        """
        async with session.get(url="http://192.168.112.150/api/v1.0/manage/user/roles") as resp:
            ret = await resp.json()
            return ret
    
    
    async def main():
        """登录系统,同步"""
        # 如果要接受来自IP的cookie,需要加unsafe=True
        session = aiohttp.ClientSession(cookie_jar=aiohttp.cookiejar.CookieJar(unsafe=True))
        await login(session)
    
        """业务代码,异步"""
        result = await asyncio.gather(get_info1(session), get_info2(session))
        print("所有异步请求结果: ", result)
    
        """退出系统,同步"""
        await logout(session)
        await session.close()
    
    
    asyncio.run(main())
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    codevs 1501 二叉树最大宽度和高度x
  • 原文地址:https://www.cnblogs.com/staff/p/15427908.html
Copyright © 2011-2022 走看看