如何使用python 3构造对neutrinoapi的请求?(将urllib2请求转换为urllib)
我不熟悉服务器端代码,对使用neutrinoapi www.neutrinoapi.com从文本中过滤出一些不好的单词很感兴趣。我使用瓶服务器在Python 3 im中编写了以下代码:如何使用python 3构造对neutrinoapi的请求?(将urllib2请求转换为urllib),python,python-3.x,urllib2,urllib,Python,Python 3.x,Urllib2,Urllib,我不熟悉服务器端代码,对使用neutrinoapi www.neutrinoapi.com从文本中过滤出一些不好的单词很感兴趣。我使用瓶服务器在Python 3 im中编写了以下代码: url = 'https://neutrinoapi.com/bad-word-filter' params = { 'user-id': 'testing', 'api-key': '205cmqorLBdyV2F9FX4z6NNq1Y3z8AkRTw8ImtGE2MtzxmhT', '
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())
此请求返回以下错误:
引发HTTPErrorreq.full_url、代码、消息、hdrs、fp
urllib.error.HTTPError:HTTP错误403:禁止
网站上的示例位于以下链接:
提供的示例是使用python 2.7和urllib2,据我所知,它们现在已内置到urllib中。似乎无法获得在Python 3中工作的请求。有没有关于如何发出正确请求的想法?Python示例没有将JSON用于参数,只用于响应。您需要对这些参数进行URL编码;为此使用,然后将生成的字符串编码为字节 您还需要发送坏字筛选请求的内容参数,而不是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())
非常感谢。这真是太棒了。我在示例中遗漏了它,但它非常有意义。