2011-03-05 14 views
11

tengo una autentificación protegida url: www.domain.com/aliasjava, androide, resolver una dirección URL, URI redirecciona

que cuando solicitado volverá otra url: www.another.com/resource.mp4 (no protegido)

Me gustaría saber si existe un método en Java que devolverá la URL real de una determinada. Algo así como: segundo = resolver (primero)

Estoy pensando en cargar el primero y tratar de leer en la respuesta tal vez el atributo de ubicación, pero como no soy un gurú de Java me gustaría saber si Java Ya enfrenta esto.

Respuesta

40

Este es un problema que solía tener con respecto a los redireccionamientos de URL. Pruebe el siguiente código:

URL url = new URL(url); 
HttpURLConnection ucon = (HttpURLConnection) url.openConnection(); 
ucon.setInstanceFollowRedirects(false); 
URL secondURL = new URL(ucon.getHeaderField("Location")); 
URLConnection conn = secondURL.openConnection(); 

La "magia" aquí pasa en estos 2 pasos:

ucon.setInstanceFollowRedirects(false); 
URL secondURL = new URL(ucon.getHeaderField("Location")); 

Por InstanceFollowRedirects por defecto se establecen en true, pero que desea establecer en false para capturar el segundo URL. Para poder obtener esa segunda URL desde la primera URL, debe obtener el campo de encabezado denominado "Ubicación".

+0

Gracias por la respuesta, ¿puede ayudar a agregar autenticación a url.openConnection() ?. En el resto de mi aplicación uso el método HttpClient y execute() pasando el UsernamePasswordCredentials para pasar auth. – sosergio

+0

Me temo que no estoy muy familiarizado con httpClient y ejecuto, pero puedo mostrarle una guía simple usando las clases de URL normales: http://blogs.deepal.org/2008/01/sending-basic-authentication-using -url.html –

+0

también consulte: http://stackoverflow.com/questions/496651/connecting-to-remote-url-which-quotes-authentication-using-java –

0

He eliminado este problema en los sitios donde tenemos un enrutador MikroTik mediante el uso de un filtro de protocolo de capa 7 como se muestra a continuación. Esto no ayuda a los dispositivos fuera de la red WiFi (obviamente), pero al menos les da un respiro cuando están conectados al hogar y/o funcionan redes WiFi.

En primer lugar, crear la definición de protocolo:

/ip firewall layer7-protocol 
add comment="Frigging javascript redirects on chrome browsers" \ 
    name=Javascript_Redirect \ 
    regexp="^.+(spaces.slimspot.com|mostawesomeoffers.com).*\$" 

Ahora, para filtrar realidad este tráfico a cabo

/ip firewall filter 
add action=drop chain=forward comment=\ 
    "Block and log Javascript_Redirect L7 Protocol" layer7-protocol=\ 
    Javascript_Redirect log=yes log-prefix=JSredirect_ 

Otros servidores de seguridad que tienen la capa 7 capacidad de filtración también podría bloquear estas redirecciones de una manera similar .

Cuestiones relacionadas