No estoy buscando "marcos REST basados en Python ". Quiero usar el servicio RESTful proporcionado por algún servidor java en python. Gracias de cualquier manera.
Bala
Respuestas:
78
Algo como esto debería funcionar a menos que me pierda el punto:
esto funcionaría si no se requiere una credencial para aprobar. Pero recibo este error "urllib2.HTTPError: Error HTTP 401: No autorizado"
Bala
¿De dónde estás intentando descargar?
Trufa
1
Necesito usar la autenticación Kerberos. Lo siento, olvidé mencionar en cuestión.
Bala
@BalamuruganK ¿qué sistema operativo estás usando?
Trufa
Estoy usando Unix. tratando con kerberos lib para obtener el token para pasarlo a httpConnection.putheader ('Autorización',?)
Bala
123
Le daría una oportunidad a la biblioteca de solicitudes para esto. Esencialmente, un contenedor mucho más fácil de usar alrededor de los módulos de la biblioteca estándar (es decir, urllib2, httplib2, etc.) que usaría para lo mismo. Por ejemplo, para obtener datos json de una URL que requiere autenticación básica se vería así:
import requests
response = requests.get('http://thedataishere.com',
auth=('user', 'password'))
data = response.json()
Si se está perdiendo el requestsmódulo, sólo tiene que hacer: pip install requests. Más información y documentos aquí
benscabbia
aquí, ¿por qué mi respuesta json se convierte en u antes de la clave, el par de valores? {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
Básicamente, debe realizar una solicitud HTTP al servicio y luego analizar el cuerpo de la respuesta. Me gusta usar httplib2 para ello:
import httplib2 as http
import json
try:
from urlparse import urlparse
except ImportError:
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)
Si desea utilizar Python 3, puede utilizar lo siguiente:
import json
import urllib.request
req = urllib.request.Request('url')
with urllib.request.urlopen(req) as response:
result = json.loads(response.readall().decode('utf-8'))
Bueno, en primer lugar, creo que implementar su propia solución para esto, todo lo que necesita es urllib2 o httplib2. De todos modos, en caso de que necesite un cliente REST genérico, consulte esto.
Sin embargo, creo que el conjunto de características de la biblioteca no funcionará para la mayoría de los servicios web porque probablemente usarán oauth, etc. Además, no me gusta el hecho de que esté escrito sobre httplib, que es un fastidio en comparación con httplib2, pero debería funcionar para usted si no tiene que manejar muchas redirecciones, etc.
Respuestas:
Algo como esto debería funcionar a menos que me pierda el punto:
import json import urllib2 json.load(urllib2.urlopen("url"))
fuente
Le daría una oportunidad a la biblioteca de solicitudes para esto. Esencialmente, un contenedor mucho más fácil de usar alrededor de los módulos de la biblioteca estándar (es decir, urllib2, httplib2, etc.) que usaría para lo mismo. Por ejemplo, para obtener datos json de una URL que requiere autenticación básica se vería así:
import requests response = requests.get('http://thedataishere.com', auth=('user', 'password')) data = response.json()
Para la autenticación kerberos, el proyecto de solicitudes tiene la biblioteca reqests-kerberos que proporciona una clase de autenticación kerberos que puede usar con las solicitudes :
import requests from requests_kerberos import HTTPKerberosAuth response = requests.get('http://thedataishere.com', auth=HTTPKerberosAuth()) data = response.json()
fuente
requests
módulo, sólo tiene que hacer:pip install requests
. Más información y documentos aquíBásicamente, debe realizar una solicitud HTTP al servicio y luego analizar el cuerpo de la respuesta. Me gusta usar httplib2 para ello:
import httplib2 as http import json try: from urlparse import urlparse except ImportError: 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)
fuente
Si desea utilizar Python 3, puede utilizar lo siguiente:
import json import urllib.request req = urllib.request.Request('url') with urllib.request.urlopen(req) as response: result = json.loads(response.readall().decode('utf-8'))
fuente
Bueno, en primer lugar, creo que implementar su propia solución para esto, todo lo que necesita es urllib2 o httplib2. De todos modos, en caso de que necesite un cliente REST genérico, consulte esto.
https://github.com/scastillo/siesta
Sin embargo, creo que el conjunto de características de la biblioteca no funcionará para la mayoría de los servicios web porque probablemente usarán oauth, etc. Además, no me gusta el hecho de que esté escrito sobre httplib, que es un fastidio en comparación con httplib2, pero debería funcionar para usted si no tiene que manejar muchas redirecciones, etc.
fuente