¿Cómo verifico el código de estado HTTP de un objeto sin descargarlo?

>>> a=urllib.urlopen('http://www.domain.com/bigvideo.avi') >>> a.getcode() 404 >>> a=urllib.urlopen('http://www.google.com/') >>> a.getcode() 200 

Mi pregunta es … bigvideo.avi es de 500MB. ¿Mi script primero descarga el archivo, luego lo comprueba? O, ¿puede verificar inmediatamente el código de error sin guardar el archivo?

Desea realmente decirle al servidor que no envíe el contenido completo del archivo. HTTP tiene un mecanismo para esto llamado “HEAD” que es una alternativa a “GET”. Funciona de la misma manera, pero el servidor solo le envía los encabezados, ninguno del contenido real.

Eso le ahorrará al menos a uno de ustedes el ancho de banda, mientras que simplemente no hacer una lectura () no se molestará en obtener el archivo completo.

Prueba esto:

 import httplib c = httplib.HTTPConnection() c.request("HEAD", ) print c.getresponse().status 

Se imprimirá el código de estado. La URL debe ser solo un segmento, como “/ foo” y el nombre de host debe ser, “www.example.com”.

Sí, buscará el archivo.

Creo que lo que realmente quiere hacer es enviar una solicitud HTTP HEAD (que básicamente solicita al servidor no los datos en sí, sino los encabezados). puedes mirar aqui

Creo que tu código ya hace eso. nunca llama al método read () en la respuesta, por lo que nunca está descargando el contenido del archivo.

mejor aún … podría enviar una solicitud HTTP HEAD usando httplib en lugar de hacer el HTTP GET que hace su código urllib.