我是Aiohttp的新手,这是用于填充数据的客户端代码。在服务器代码下面,用于接收数据。但是在服务器端,我得到了KeyError。另请参见print(len(request.post())@服务器为0。但是此服务器代码可与Postman测试一起使用。此客户端代码可与“ / httpbin / post /”请求一起使用。此代码有什么问题。帮助非常感谢。
BASE_URL = "http://127.0.0.1:9001/"
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
}
data = {'username': 'achama', 'password': 'password'}
register_endpoint = "register"
jar = aiohttp.CookieJar(unsafe=True)
async def main():
async with aiohttp.ClientSession(json_serialize=ujson.dumps, cookie_jar=jar) as session:
async with session.post(url=BASE_URL+register_endpoint, json=data, headers=headers) as resp:
resp_data = await resp.json(content_type=None)
print(resp_data)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
# Zero-sleep to allow underlying connections to close
loop.run_until_complete(asyncio.sleep(0))
loop.close()
异步def寄存器(自己,请求): 打印(len(await request.post()))
posted_data = await request.post()
user_id = await db.get_user_id(self.mongo.loginhub,
posted_data['username'])
if user_id is None:
hashed_password = generate_password_hash(posted_data['password'])
await self.mongo.loginhub.insert_one(
{'username': posted_data['username'],
'current_password': hashed_password,
'last_password': ""})
unique_id = await db.get_user_id(self.mongo.loginhub, posted_data['username'])
await self.mongo.users.insert_one(
{'unique_id': unique_id, 'username': posted_data['username'],
"joined_date": datetime.utcnow(), "active": False})
return json_response({"message": f"Your account created with {posted_data['username']} Please login to use."})
else:
return json_response({"Error": f"Username {posted_data['username']} already exists. Please choose another one."})
文件“ /home/bijuknarayan/workspace/aio/marryapp/backend/auth.py”, 第44行,在寄存器中 user_id =等待db.get_user_id(self.mongo.loginhub,posted_data ['username'])文件“ multidict / _multidict.pyx”,第62行, 在multidict._multidict._Base中。 getitem 文件 第57行中的“ multidict / _multidict.pyx” multidict._multidict._Base._getone文件“ multidict / _multidict.pyx”, 第52行,在multidict._multidict._Base._getone KeyError:'username'
答案 0 :(得分:0)
如果要处理JSON数据,请在服务器端用await request.post()
替换await request.json()
。