从 Python 服务器调用 Personality Insights API

Calling Personality Insights API from Python server

我正在尝试从我的 Python 网络应用调用 Personality Insights API 但它总是 return 禁止错误 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不允许接受来自服务器端应用程序的请求?

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

无论如何我都会推荐你使用 Python SDK where you can abstract from the API requests details. There are examples in the github page for watson-developer-cloud linked above. The package is even available in pip,所以从任何环境中包含它应该很简单。

我明白了。问题是我正在使用免费的 pythonanywhere 帐户,该帐户限制用户向外部服务器发送请求到此 whitelist. 我需要升级我的帐户以允许不受限制的请求。