【问题标题】:Trying to access database from my local server尝试从我的本地服务器访问数据库
【发布时间】:2018-09-21 01:50:51
【问题描述】:

我想使用 Zoho Creator 的 REST API (https://www.zoho.com/creator/help/api/rest-api/rest-api-add-records.html) 从 Zoho Creator 访问数据库它来自服务器。

所以我使用 django 设置了一个本地服务器,并从终端运行了一个脚本,该脚本应该向我的 zoho 数据库添加一条记录,但它不起作用......

我不确定脚本是否错误,或者我使用服务器的方式是否错误。

服务器由django运行,我用命令“django-admin startproject mysite”做了一个简单的服务器,用“python manage.py runserver”运行服务器。

应用程序的名称是“synonyms-database”,表单是“Main_Form”,唯一的字段称为“名称”。所以有了这些信息,我遵循了 API 说明,这是我的脚本:

import requests

payload = {'authtoken': myAPIToken, 'scope': 'creatorapi', 'name': 'test'}
response = requests.request('POST', 
'https://creator.zoho.com/api/erik341/json/synonyms- 
database/form/Main_Form/record/add/', json=payload)

print(response.headers)
print(response.text)
print(response.url)

我得到了这样的回应:

<body>
    <div>
        An error has occurred. It has been reported to Zoho Creator 
        support. We will look into this issue .<br> Sorry for the 
        inconvenience caused.
        <p><p>
        Go to <a href='%2F'>Home</a>
    </div>
</body>

如果我使用 data=payload 而不是 json=payload,则响应更改为:

{"code":2945,"message":"INVALID_TICKET"}

【问题讨论】:

  • 您收到的状态码是什么?
  • 示例请求显示了一个 HTML 表单,因此看起来数据应该是表单编码的。这意味着您应该使用data=payload 而不是json=payload。如果您搜索“INVALID_TICKET”,似乎有很多结果 - one suggestion 我看到的是尝试重新生成令牌。
  • 好吧,我觉得自己真的很愚蠢...由于某种原因,当我找到您发送给我的链接时,我只是阅读了重新创建令牌的部分,这没有用...但我现在更改了 url到 .eu 而不是 .com 并且新消息是关于未设置字段“名称”的值的错误,我通过将“名称”更改为“名称”来解决该问题。非常感谢!
  • 似乎有很多关于 INVALID_TOKEN 的页面 - 很高兴您找到了有效的答案!

标签: python django server zoho


【解决方案1】:

API 需要表单编码的数据,因此您应该使用 data=payload 而不是 json=payload。 URL中的json是响应格式,不是请求格式。

您也许可以通过重新生成令牌来解决INVALID_TICKET 错误。 this post 上有一条评论,通过将 URL 从 .eu 更改为 .com 解决了错误。确保在与您的请求 URL 匹配的 URL 上生成身份验证令牌。

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多