Ich freue mich nicht auf "Python- basierte REST-Frameworks". Ich möchte den RESTful-Dienst verwenden, der von einem Java-Server in Python bereitgestellt wird. Danke trotzdem.
Bala
Antworten:
78
So etwas sollte funktionieren, es sei denn, ich verpasse den Punkt:
Dies würde funktionieren, wenn kein Berechtigungsnachweis zum Bestehen erforderlich ist. Aber ich bekomme diesen Fehler "urllib2.HTTPError: HTTP Error 401: Unauthorized"
Bala
Woher möchten Sie herunterladen?
Trufa
1
Ich muss die Kerberos-Authentifizierung verwenden. Entschuldigung, ich habe vergessen, in Frage zu erwähnen.
Bala
@ BalamuruganK Welches Betriebssystem verwenden Sie?
Trufa
Ich benutze Unix. versuchen mit kerberos lib, Token zu bekommen, um es an httpConnection.putheader ('Authorization' ,?) zu übergeben
Bala
122
Ich würde die Anforderungsbibliothek dafür versuchen. Im Wesentlichen nur ein viel einfacher zu verwendender Wrapper um die Standardbibliotheksmodule (z. B. urllib2, httplib2 usw.), die Sie für dasselbe verwenden würden. Das Abrufen von JSON-Daten von einer URL, für die eine grundlegende Authentifizierung erforderlich ist, sieht beispielsweise folgendermaßen aus:
import requests
response = requests.get('http://thedataishere.com',
auth=('user','password'))
data = response.json()
Wenn Sie das requestsModul vermissen , tun Sie einfach : pip install requests. Weitere Infos und Dokumente hier
Benscabbia
hier, warum wird meine json-Antwort mit u vor dem Schlüssel-Wert-Paar? {u'status ': u'FINISHED', u'startTime ': u'2016-11-08T15: 32: 33.241Z', u'jobId ': u'f9d71eaa-d439-4a39-a258-54220b14f1b8', u ' context ': u'sql-context', u'duration ': u'0.061 secs'}
KARTHIKEYAN.A
27
Grundsätzlich müssen Sie eine HTTP-Anforderung an den Dienst senden und dann den Hauptteil der Antwort analysieren. Ich benutze gerne httplib2 dafür:
import httplib2 as http
import json
try:from urlparse import urlparse
exceptImportError:from urllib.parse import urlparse
headers ={'Accept':'application/json','Content-Type':'application/json; charset=UTF-8'}
uri ='http://yourservice.com'
path ='/path/to/resource/'
target = urlparse(uri+path)
method ='GET'
body =''
h = http.Http()# If you need authentication some example:if auth:
h.add_credentials(auth.user, auth.password)
response, content = h.request(
target.geturl(),
method,
body,
headers)# assume that content is a json reply# parse content with the json module
data = json.loads(content)
Wie wird Kerberos zur Authentifizierung verwendet?
Foon
3
Zunächst einmal denke ich, dass Sie nur urllib2 oder httplib2 einführen müssen, um eine eigene Lösung dafür zu finden. Falls Sie einen generischen REST-Client benötigen, überprüfen Sie dies.
Ich denke jedoch, dass der Funktionsumfang der Bibliothek für die meisten Webdienste nicht funktioniert, da sie wahrscheinlich oauth usw. verwenden werden. Ich mag auch nicht die Tatsache, dass es über httplib geschrieben ist, was im Vergleich zu httplib2 ein Schmerz ist. Es sollte immer noch für Sie funktionieren, wenn Sie nicht viele Weiterleitungen usw. verarbeiten müssen.
Antworten:
So etwas sollte funktionieren, es sei denn, ich verpasse den Punkt:
quelle
Ich würde die Anforderungsbibliothek dafür versuchen. Im Wesentlichen nur ein viel einfacher zu verwendender Wrapper um die Standardbibliotheksmodule (z. B. urllib2, httplib2 usw.), die Sie für dasselbe verwenden würden. Das Abrufen von JSON-Daten von einer URL, für die eine grundlegende Authentifizierung erforderlich ist, sieht beispielsweise folgendermaßen aus:
Für die Kerberos-Authentifizierung verfügt das Anforderungsprojekt über die Bibliothek reqests-kerberos, die eine Kerberos-Authentifizierungsklasse bereitstellt, die Sie für Anforderungen verwenden können :
quelle
requests
Modul vermissen , tun Sie einfach :pip install requests
. Weitere Infos und Dokumente hierGrundsätzlich müssen Sie eine HTTP-Anforderung an den Dienst senden und dann den Hauptteil der Antwort analysieren. Ich benutze gerne httplib2 dafür:
quelle
Wenn Sie Python 3 verwenden möchten, können Sie Folgendes verwenden:
quelle
Zunächst einmal denke ich, dass Sie nur urllib2 oder httplib2 einführen müssen, um eine eigene Lösung dafür zu finden. Falls Sie einen generischen REST-Client benötigen, überprüfen Sie dies.
https://github.com/scastillo/siesta
Ich denke jedoch, dass der Funktionsumfang der Bibliothek für die meisten Webdienste nicht funktioniert, da sie wahrscheinlich oauth usw. verwenden werden. Ich mag auch nicht die Tatsache, dass es über httplib geschrieben ist, was im Vergleich zu httplib2 ein Schmerz ist. Es sollte immer noch für Sie funktionieren, wenn Sie nicht viele Weiterleitungen usw. verarbeiten müssen.
quelle