从 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.
我需要升级我的帐户以允许不受限制的请求。
我正在尝试从我的 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. 我需要升级我的帐户以允许不受限制的请求。