繁体   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