0

我正在尝试从我的 Python Web 应用程序调用 Personality Insights API,但它总是返回禁止错误 403,但是当我从 Postman Chrome 扩展程序调用它时,它可以成功运行。

这是我的python代码:

def generatePersonalDescription(request):
    import requests
    from requests.auth import HTTPBasicAuth
    IBM_API_URL = "https://gateway.watsonplatform.net/personality-insights/api/v2/profile"
    top_level_url = "https://gateway.watsonplatform.net/personality-insights/api"
    username = "<user>"
    password = "<password>"

    JSON_OBJ = {'contentItems': [{'content' : 'strcontent' , 'contenttype': 'application/json','sourceid': 'blog123','language': 'en'}]}

    json_data = json.dumps(JSON_OBJ)

    resp = requests.get(IBM_API_URL, auth=(username, password))

    return HttpResponse(resp)

是否有可能因为 python 是服务器端并且 API 不允许接受来自服务器端应用程序的请求?

4

2 回答 2

1

您似乎正在使用 HTTPGET方法,而Personality Insights配置文件 API 接受POST. 我不确定这是 HTTP 403 的原因(不应该),但无论如何我都会仔细检查您的凭据。(顺便说一句,永远不要在此处的问题中公开您的凭据 - 有人可能会使用/滥用它们!)。

无论如何,我建议您使用Python SDK,您可以在其中从 API 请求详细信息中抽象出来。watson-developer-cloud上面链接的 github 页面中有示例。该软件包甚至可以在 中使用pip,因此从任何环境中包含它都应该很简单。

于 2016-07-11T18:27:15.177 回答
1

我想通了。问题是我正在使用免费的 pythonanywhere 帐户,该帐户将用户从向外部服务器发送请求的形式限制到此白名单。 我需要升级我的帐户以允许不受限制的请求。

于 2016-07-16T09:40:20.363 回答