una página para pagina otra misma internos insertar imagen hipervinculos hipervinculo hacer enlazar enlaces enlace ejemplos dentro como codigo java url grails http-headers

java - página - href html ejemplos



¿Cómo determinar si un enlace URL determinado es un video o una imagen? (6)

Intento tomar una URL dada ingresada por el usuario y determinar si la URL apunta a una imagen o video.

Ejemplo de caso de uso:

Cuando un usuario pegue la URL de un video de YouTube, al guardar, la página mostrará automáticamente el reproductor de YouTube incorporado.

Cuando un usuario publica la URL de una imagen en Flickr, al guardar, la página mostrará automáticamente una versión más pequeña de la imagen de Flickr.


Emita una solicitud HTTP HEAD para que pueda examinar los encabezados HTTP que regresan sin tener que descargar primero el documento completo. Mostrando un caso no programático bajo Linux usando "curl":

$ curl --head http://.com/Content/Img/-logo-250.png HTTP/1.1 200 OK Cache-Control: max-age=28800 Content-Length: 3428 Content-Type: image/png Last-Modified: Fri, 16 Jan 2009 09:35:30 GMT Accept-Ranges: bytes ETag: "98f590c5bd77c91:0" Server: Microsoft-IIS/7.0 Date: Fri, 23 Jan 2009 03:55:39 GMT

Puede ver aquí desde el Tipo de contenido que esta es una imagen. Puede usar HTTPClient desde Apache desde Java para hacer la solicitud de HTTP Head.

Si desea descargar el contenido con seguridad, simplemente emita HTTP GET (usando Httpclient) y use el mismo encabezado HTTP para determinar el tipo de contenido.


Puede buscar la URL y ver el tipo de contenido de la respuesta.

Puede utilizar HTTP Client desde apache, lo ayuda a buscar el contenido de la URL y puede usarlo para navegar por los redireccionamientos. Por ejemplo, intenta buscar lo siguiente:

http://www.youtube.com/watch?v=d4LkTstvUL4

Devolverá un HTML que contiene el video. Después de un tiempo descubrirás que el video está aquí:

http://www.youtube.com/v/d4LkTstvUL4

Pero si buscas esa página obtendrás una redirección:

HTTP/1.0 302 Redirect Date: Fri, 23 Jan 2009 02:25:37 GMT Content-Type: text/plain Expires: Fri, 23 Jan 2009 02:25:37 GMT Cache-Control: no-cache Server: Apache X-Content-Type-Options: nosniff Set-Cookie: VISITOR_INFO1_LIVE=sQc75zc-QSU; path=/; domain=.youtube.com; expires= Set-Cookie: VISITOR_INFO1_LIVE=sQc75zc-QSU; path=/; domain=.youtube.com; expires= Location: http://www.youtube.com/swf/l.swf?swf=http%3A//s.ytimg.com/yt/swf/cps-vf L4&rel=1&eurl=&iurl=http%3A//i1.ytimg.com/vi/d4LkTstvUL4/hqdefault.jpg&sk=Z_TM3JF e_get_video_info=1&load_modules=1

Entonces, lo que tienes que hacer es buscar la URL y examinarla, hasta que obtengas el contenido final

Esta sección explica cómo manejar los redireccionamientos.


Pulse el enlace e inspeccione el encabezado de tipo de contenido? Si el resultado es una página HTML, podría buscar la imagen más grande o el archivo flash incrustado en la página y elegir mostrar eso?


Sugiero usar curl con un encabezado de rango para permitirle inspeccionar el tipo de archivo.

curl -s -v -r0-499 -o test http://.com/content/img/so/logo.png * About to connect() to .com port 80 (#0) * Trying 69.59.196.211... connected * Connected to .com (69.59.196.211) port 80 (#0) > GET /content/img/so/logo.png HTTP/1.1 > Range: bytes=0-499 > User-Agent: curl/7.19.4 (i386-apple-darwin9.6.0) libcurl/7.19.4 zlib/1.2.3 > Host: .com > Accept: */* > < HTTP/1.1 206 Partial Content < Cache-Control: max-age=604800 < Content-Type: image/png < Content-Range: bytes 0-499/3438 < Last-Modified: Fri, 05 Jun 2009 06:52:35 GMT < Accept-Ranges: bytes < ETag: "25dd4b35aae5c91:0" < Server: Microsoft-IIS/7.0 < Date: Fri, 19 Jun 2009 19:39:43 GMT < Content-Length: 500 < { [data not shown] * Connection #0 to host .com left intact * Closing connection #0

Luego ejecuta:

$ file test test: PNG image data, 250 x 61, 8-bit colormap, non-interlaced

Ahora ya conoce el tipo de mime: image / png , el tamaño del archivo 3438 bytes , y el archivo es una imagen PNG a color de 250 x 61 .


El indexador rápido de video es un software de captura de video que puede capturar cuadros de video automáticamente de una lista de videos y crear páginas web de índice, imágenes de índice o una lista de imágenes.


Esta es una solución sin apache.

HttpURLConnection urlConnection; String urlString = "http://www.youtube.com/v/oHg5SJYRHA0"; try { urlConnection = (HttpURLConnection) new URL(urlString).openConnection(); urlConnection.setInstanceFollowRedirects(true); HttpURLConnection.setFollowRedirects(true); int status = urlConnection.getResponseCode(); if (status >= 300 && status <= 307) { urlString = urlConnection.getHeaderField("Location"); urlConnection = (HttpURLConnection) new URL(urlString).openConnection(); System.out.println("Redirect to URL : " + urlString); } String contentType = urlConnection.getHeaderField("Content-Type"); if (contentType.startsWith("image/")) { //do something with an image } else if (contentType.equals("application/x-shockwave-flash")) { //do something with a video //} else ... } System.out.println(contentType); } catch (IOException e) { e.printStackTrace(); }

Siga el ejemplo de redirección de mkyong.com