如何使用 session.get() 将标头传递给异步

Akh*_*ath 3 python-asyncio aiohttp requests-futures

我想知道如何在以下 get 调用中传递标头

headers = {
'User-Agent': 'Mozilla'
}
async def fetch(url, session):
async with session.get(url) as response:
    resp = await response.read()
    return resp
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但没有得到任何回应。

headers = {
'User-Agent': 'Mozilla'
}
async def fetch(url, session):
async with session.get(url, headers=headers) as response:
    resp = await response.read()
    return resp
Run Code Online (Sandbox Code Playgroud)

目的是以异步模式调用不同的 url。需要知道是否还有其他替代方法,但无论如何,都需要传递标头才能获得正确的响应。

Mik*_*mov 6

您可以使用 httpbin.org for requests 来查看服务器如何看待您的请求:

import asyncio
import aiohttp
from pprint import pprint


headers = {
    'User-Agent': 'Mozilla'
}


async def fetch(url, session):
    async with session.get(url, headers=headers) as response:
        res = await response.json()
        pprint(res)


async def main():
    async with aiohttp.ClientSession() as session:
        await fetch("http://httpbin.org/get", session)


asyncio.run(main())
Run Code Online (Sandbox Code Playgroud)

结果:

{'args': {},
 'headers': {'Accept': '*/*',
             'Accept-Encoding': 'gzip, deflate',
             'Host': 'httpbin.org',
             'User-Agent': 'Mozilla',
             'X-Amzn-Trace-Id': 'Root=1-602f94a7-3aa49d8c48ea04345380c67b'},
 'origin': '92.100.218.123',
 'url': 'http://httpbin.org/get'}
Run Code Online (Sandbox Code Playgroud)

如您所见,'User-Agent': 'Mozilla'已发送。