我正在尝试使异步GET函数生效,但是当url包含unicode(我使用韩国字母)字符串时,它会发生400 Bad Request
。当我使用请求时没有问题,但是只有aiohttp给我一个错误。我该如何解决这个问题?
请求
import requests
def get():
response = requests.get("some url with unicode")
return response
get() # 200 OK
aiohttp
import asyncio
import aiohttp
async def get():
response = await aiohttp.request("GET", "some url with unicode")
return response
loop = asyncio.get_event_loop()
loop.run_until_complete(get()) # 400 Bad Request
我正在使用Python 3.6
,asyncio 3.4.3
,aiohttp 1.0.5
。
答案 0 :(得分:1)
我自己找到了解决方法。
from urllib import parse
url = "some url with unicode"
parsed = parse.urlparse(url)
parsed = parse.parse_qs(parsed.query)
encoded = parse.urlencode(parsed, doseq=True)
url = "{}?{}".format("url base without parameters", encoded)
然后url
被编码为ascii字符串,我得到了200 OK
。感谢您的评论:)