martes, 26 de octubre de 2010

Determinar redireccionamiento de URL's (redirects)


Un ejemplo básico para determinar si un determinado URL redirecciona a otra dirección.
La función de esta clase obtiene el código de respuesta de la conexión HTTP y si es cualquiera de los códigos de redireccionamiento: 301/302/303, obtiene la dirección redireccionada del encabezado "Location".

import java.net.HttpURLConnection;
import java.net.URL;

public class URLUtils {

/**
* Prints the redirect URL for the provided input URL (if it applies).
* @param url
*/
public static void printRedirect(String url) {
try {
URL urlToPing = new URL(url);
HttpURLConnection urlConn = (HttpURLConnection) urlToPing
.openConnection();
// Needed to check if it is a redirect.
urlConn.setInstanceFollowRedirects(false);

// It's any of these response codes: 301/302/303
if(urlConn.getResponseCode() == HttpURLConnection.HTTP_MOVED_PERM
|| urlConn.getResponseCode() == HttpURLConnection.HTTP_MOVED_TEMP
|| urlConn.getResponseCode() == HttpURLConnection.HTTP_SEE_OTHER) {
System.out.println("URL <" + url + "> redirects to: <"
+ urlConn.getHeaderField("Location") + ">, Response Code: " +
+ urlConn.getResponseCode());
}else {
System.out.println("URL <" + url + "> has no redirect, Response Code: "
+ urlConn.getResponseCode());
}
} catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
URLUtils.printRedirect("http://www.google.com");
URLUtils.printRedirect("http://www.crjug.org");
}
}


Salida:


URL <http://www.google.com> redirects to: <http://www.google.co.cr/>, Response Code: 302
URL <http://www.crjug.org> has no redirect, Response Code: 200

1 comentario:

  1. Muy buen ejemplo mop (Y)
    deberia tirarlo al crjug si no es que ya esta ahi!

    ResponderEliminar