[英]AioHttp: How can I create a data form for an aiohttp post
這是我使用請求時數據的樣子,它工作正常。
data ={
"srt": srt,
"firstname" : firstname,
"lastname" : lastname,
"Email" : email,
"password" : password,
"promotion" : "true",
"action" : {"name":"EMAIL_REG_FORM_SUBMIT"},
"ri" : "NORU",
"ets" : ets
}
我正在嘗試轉換它以便它可以與 aiohttp 一起使用,這就是我所擁有的。 我想我因為行而收到錯誤: "action": {"name":"EMAIL_REG_FORM_SUBMIT"},
data = aiohttp.FormData()
data.add_field("srt", srt)
data.add_field("firstname", firstname)
data.add_field("lastname", lastname)
data.add_field("Email", email)
data.add_field("password", password)
data.add_field("promotion", 'true')
data.add_field("action", {"name":"EMAIL_REG_FORM_SUBMIT"})
data.add_field("ri", 'NORU')
data.add_field("ets", ets)
如果有人對如何進行這項工作有任何想法,請發表評論。 本質上,我需要一個帶有會話的異步請求,如果您知道該怎么做,請告訴我。
通過簡單地將其轉換為 JSON 字符串,我能夠在字段中提交完整字典:
data.add_field("action", json.dumps({"name":"EMAIL_REG_FORM_SUBMIT"}))
根據字典中的數據,您可能需要將序列化類添加到json.dumps
以處理json.dumps
默認序列化類無法處理的“特殊”數據類型,或者您需要在一些特殊之后序列化為 JSON格式(例如將帶時區的 DateTime 轉換為服務器期望的某種特殊文本格式)
您還可以通過額外調用 add_field 添加文件,將表單字段中的文件名稱指定為data.add_field()
調用的name
字段。
在幕后,FormData 嘗試將所有字段和文件轉換為格式正確的multipart/form-data
有效負載。
(在與 aiohttp 客戶端文檔和我向其提交數據的服務器進行了一整天的斗爭之后,我發現了其中的大部分內容正在做“不智能”的事情)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.