2017-01-28 3 views
0

Ich bin neu auf der Server-Seite Code und interessiert an der Verwendung der Neutrinoapi (www.neutrinoapi.com) zum Filtern von einigen schlechten Worten aus dem Text. Ich habe den folgenden Code in Python 3 geschrieben (im Flaschen Server):Wie strukturiere ich eine Anfrage an Neutrinoapi mit Python 3? (Umwandlung von urllib2 Anfrage nach urllib)

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()) 

Diese Anforderung wird der folgende Fehler zurückgegeben:

Erhöhung httperror (req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP-Fehler 403: Verboten

Das Beispiel auf der Website unter diesem Link: https://www.neutrinoapi.com/api/api-examples/python/

Beispiele vorgesehen sind, mit python 2.7 und urllib2 die ich unders tand ist jetzt in urllib integriert. Kann nicht scheinen, die Anforderung zu erhalten, in Python 3 zu arbeiten. Irgendwelche Ideen, wie man eine richtige Anfrage macht?

Antwort

1

Das Python-Beispiel verwendet JSON nicht für die Parameter, nur für die Antwort. Sie müssen URL kodieren diese Parameter stattdessen; Verwenden Sie dazu die urllib.parse.urlencode() function, dann kodieren Sie die resultierende Zeichenfolge in Bytes.

Sie müssen auch die content Parameter für eine bad-word-filter Anfrage senden, keine IP-Adresse:

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()) 
+0

Thank you! Das hat wunderbar funktioniert. Ich habe es im Beispiel verpasst, aber es macht Sinn. – DannyMoshe

Verwandte Themen