Итак, прежде всего, вам нужно получить еще одно поле с токеном. Для этого вы должны передать заголовок 'accept': 'application/json'
в вашем первом запросе. В ответ вы получите объект json с параметрами token
и landed_at
. Вы должны использовать их на следующем шаге.
Тогда данные публикации должны отличаться от того, что вы передаете. См. Вкладку сети в инструментах разработчика браузера, чтобы узнать фактический шаблон. Он имеет такую структуру:
{
"signature": <YOUR_SIGNATURE>,
"form_id": "aA7Vx9",
"landed_at": <YOUR_LANDED_AT_TIME>,
"answers": [
{
"field": {
"id": "42758279",
"type": "yes_no"
},
"type": "boolean",
"boolean": True
},
{
"field": {
"id": "42758410",
"type": "short_text"
},
"type": "text",
"text": "1"
}
]
}
И, наконец, вам следует преобразовать этот json в текст, чтобы сервер успешно его проанализировал.
Рабочий пример:
import requests
import json
token = json.loads(requests.post(
"https://typeformtutorial.typeform.com/app/form/result/token/aA7Vx9/default",
headers={'accept': 'application/json'}
).text)
signature = token['token']
landed_at = int(token['landed_at'])
data = {
"signature": signature,
"form_id": "aA7Vx9",
"landed_at": landed_at,
"answers": [
{
"field": {
"id": "42758279",
"type": "yes_no"
},
"type": "boolean",
"boolean": True
},
{
"field": {
"id": "42758410",
"type": "short_text"
},
"type": "text",
"text": "1"
}
]
}
json_data = json.dumps(data)
r = requests.post("https://typeformtutorial.typeform.com/app/form/submit/aA7Vx9", data=json_data)
print(r.text)
Вывод:
{"message":"success"}