我正在学习Python,并尝试使用Python请求填充类型表单,但我得到以下错误响应:
{"code":"VALIDATION_ERROR","description":"The provided body is malformed.","details":[{"code":"INVALID_PAYLOAD","description":"signature mismatch","in":"BODY","field":".signature"}]}
但是,当我将token.text
值手动放入data
中时,它可以工作。当以编程方式将令牌添加到有效负载时,我无法使其工作,甚至尝试了str()
,但它不工作
代码如下:
import requests
import time
epochTime = int(time.time())
token = requests.get("https://mehdikhireddine.typeform.com/app/form/result/token/OcotDC/default")
final = token.text
print(token.text)
data = { "signature": final,
"form_id": "OcotDC",
"landed_at": epochTime,""
"answers": [
{
"field": {
"id": "nDoisfzMsrBP",
"type": "short_text"
},
"type": "text",
"text": "mehdilemoi"
},
{
"field": {
"id": "iCW4s6Fc37OL",
"type": "legal"
},
"type": "boolean",
"boolean": True
}
]
}
r = requests.post("https://mehdikhireddine.typeform.com/app/form/submit/OcotDC", json=data)
print(r.text)
如果在从HTTPS响应获取
token
之前存储epochTime
,则会出现此问题,可能是因为服务器随后无法匹配签名和时间,从而导致"signature mismatch"
您可以通过在收到
token
响应后使用当前时间来解决此问题,即:输出:
请注意,如果在获取响应和获取
epochTime
之间经过太多时间,这仍然可能会间歇性失败相关问题 更多 >
编程相关推荐