mirror of
https://github.com/nonebot/nonebot2.git
synced 2024-12-18 09:25:46 +08:00
🐛 Fix: aiohttp 请求时 data 和 file 不能同时存在 (#2088)
This commit is contained in:
parent
6eef863b70
commit
324277091c
@ -51,11 +51,12 @@ class Mixin(ForwardMixin):
|
|||||||
raise RuntimeError(f"Unsupported HTTP version: {setup.version}")
|
raise RuntimeError(f"Unsupported HTTP version: {setup.version}")
|
||||||
|
|
||||||
timeout = aiohttp.ClientTimeout(setup.timeout)
|
timeout = aiohttp.ClientTimeout(setup.timeout)
|
||||||
files = None
|
|
||||||
|
data = setup.data
|
||||||
if setup.files:
|
if setup.files:
|
||||||
files = aiohttp.FormData()
|
data = aiohttp.FormData(data or {})
|
||||||
for name, file in setup.files:
|
for name, file in setup.files:
|
||||||
files.add_field(name, file[1], content_type=file[2], filename=file[0])
|
data.add_field(name, file[1], content_type=file[2], filename=file[0])
|
||||||
|
|
||||||
cookies = {
|
cookies = {
|
||||||
cookie.name: cookie.value for cookie in setup.cookies if cookie.value
|
cookie.name: cookie.value for cookie in setup.cookies if cookie.value
|
||||||
@ -66,7 +67,7 @@ class Mixin(ForwardMixin):
|
|||||||
async with session.request(
|
async with session.request(
|
||||||
setup.method,
|
setup.method,
|
||||||
setup.url,
|
setup.url,
|
||||||
data=setup.content or setup.data or files,
|
data=setup.content or data,
|
||||||
json=setup.json,
|
json=setup.json,
|
||||||
headers=setup.headers,
|
headers=setup.headers,
|
||||||
timeout=timeout,
|
timeout=timeout,
|
||||||
|
@ -177,11 +177,15 @@ async def test_http_driver(driver: Driver):
|
|||||||
assert data["json"] == {"json": "test"}
|
assert data["json"] == {"json": "test"}
|
||||||
|
|
||||||
request = Request(
|
request = Request(
|
||||||
"POST", "https://httpbin.org/post", files={"test": ("test.txt", b"test")}
|
"POST",
|
||||||
|
"https://httpbin.org/post",
|
||||||
|
data={"form": "test"},
|
||||||
|
files={"test": ("test.txt", b"test")},
|
||||||
)
|
)
|
||||||
response = await driver.request(request)
|
response = await driver.request(request)
|
||||||
assert response.status_code == 200 and response.content
|
assert response.status_code == 200 and response.content
|
||||||
data = json.loads(response.content)
|
data = json.loads(response.content)
|
||||||
|
assert data["form"] == {"form": "test"}
|
||||||
assert data["files"] == {"test": "test"}
|
assert data["files"] == {"test": "test"}
|
||||||
|
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
Loading…
Reference in New Issue
Block a user