首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python post请求,post问题

Python post请求,post问题
EN

Stack Overflow用户
提问于 2019-10-29 07:22:19
回答 1查看 167关注 0票数 1

我正在尝试编写一个typeform机器人,但我完全是一个初学者,所以我在使用request.post时遇到了问题

我正在尝试用下面的代码填充typeform:https://typeformtutorial.typeform.com/to/aA7Vx9

代码语言:javascript
复制
import requests

token = requests.get("https://typeformtutorial.typeform.com/app/form/result/token/aA7Vx9/default")

data = {"42758279": "true",
        "42758410": "text",
        "token": token}

r = requests.post("https://typeformtutorial.typeform.com/app/form/submit/aA7Vx9", data)

print(r)

我认为"data“有问题,我不确定我是否正确地使用了token。你能帮我一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-29 08:08:56

因此,首先,您需要获取另一个包含令牌的字段。为此,您应该在第一个请求中传递头'accept': 'application/json'。在响应中,您将获得带有tokenlanded_at参数的json对象。您应该在下一步中使用它们。

然后,post数据应该与您正在传递的数据不同。请查看浏览器开发人员工具中的网络选项卡,以了解实际的模板。它的结构是这样的:

代码语言:javascript
复制
{
    "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转换为文本,以便服务器能够成功地解析它。

工作示例:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
{"message":"success"}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58599595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档