如何使用 python 3 构造对 neutrinoapi 的请求? (将 urllib2 请求转换为 urllib)
How to structure a request to neutrinoapi using python 3? (convert urllib2 request to urllib)
我是服务器端代码的新手,对使用 neutrinoapi (www.neutrinoapi.com) 从文本中过滤掉一些不良词很感兴趣。我在 Python 3 中编写了以下代码(我使用的是 Bottle 服务器):
url = 'https://neutrinoapi.com/bad-word-filter'
params = {
'user-id': 'testing',
'api-key': '205cmqorLBdyV2F9FX4z6NNq1Y3z8AkRTw8ImtGE2MtzxmhT',
'ip': '162.209.104.195'
}
json_data = json.dumps(params).encode('utf8')
response = urllib.request.urlopen(url, data = json_data)
result = json.loads(response.read())
此请求返回以下错误:
引发 HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError:HTTP 错误 403:禁止
网站上的例子在这个link:
https://www.neutrinoapi.com/api/api-examples/python/
提供的示例使用 python 2.7 和 urllib2,据我所知,urllib2 现在已内置到 urllib 中。似乎无法让请求在 Python 中工作 3. 关于如何提出正确请求的任何想法?
Python 示例未将 JSON 用于 参数 ,仅用于响应。您需要 URL 编码 这些参数;为此使用 urllib.parse.urlencode()
function,然后将结果字符串编码为字节。
您还需要为 bad-word-filter
请求发送 content
参数,而不是 IP 地址:
from urllib.parse import urlencode
url = 'https://neutrinoapi.com/bad-word-filter'
params = {
'user-id': 'testing',
'api-key': '<valid api key>',
'content': 'foo bar baz'
}
encoded_params = urlencode(params).encode('utf8')
response = urllib.request.urlopen(url, data = encoded_params)
result = json.loads(response.read())
我是服务器端代码的新手,对使用 neutrinoapi (www.neutrinoapi.com) 从文本中过滤掉一些不良词很感兴趣。我在 Python 3 中编写了以下代码(我使用的是 Bottle 服务器):
url = 'https://neutrinoapi.com/bad-word-filter'
params = {
'user-id': 'testing',
'api-key': '205cmqorLBdyV2F9FX4z6NNq1Y3z8AkRTw8ImtGE2MtzxmhT',
'ip': '162.209.104.195'
}
json_data = json.dumps(params).encode('utf8')
response = urllib.request.urlopen(url, data = json_data)
result = json.loads(response.read())
此请求返回以下错误:
引发 HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError:HTTP 错误 403:禁止
网站上的例子在这个link: https://www.neutrinoapi.com/api/api-examples/python/
提供的示例使用 python 2.7 和 urllib2,据我所知,urllib2 现在已内置到 urllib 中。似乎无法让请求在 Python 中工作 3. 关于如何提出正确请求的任何想法?
Python 示例未将 JSON 用于 参数 ,仅用于响应。您需要 URL 编码 这些参数;为此使用 urllib.parse.urlencode()
function,然后将结果字符串编码为字节。
您还需要为 bad-word-filter
请求发送 content
参数,而不是 IP 地址:
from urllib.parse import urlencode
url = 'https://neutrinoapi.com/bad-word-filter'
params = {
'user-id': 'testing',
'api-key': '<valid api key>',
'content': 'foo bar baz'
}
encoded_params = urlencode(params).encode('utf8')
response = urllib.request.urlopen(url, data = encoded_params)
result = json.loads(response.read())