簡體   English   中英

AioHttp:如何為 aiohttp 帖子創建數據表單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM