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