java urlconnection obtener la URL redirigida final

Tengo una url que redirige a otra url. Quiero poder obtener la URL redirigida final. Mi código:

    public class testURLConnection
    {
    public static void main(String[] args) throws MalformedURLException, IOException {

    HttpURLConnection con =(HttpURLConnection) new URL( "http://tinyurl.com/KindleWireless" ).openConnection();

    System.out.println( "orignal url: " + con.getURL() );
    con.connect();

System.out.println( "connected url: " + con.getURL() );
InputStream is = con.getInputStream();
System.out.println( "redirected url: " + con.getURL() );
is.close();

}}

Siempre da url original mientras que el redirectURL es:El tipo de la actividad es el derecho del usuario, la carga, la carga, la carga, la carga, la carga, la carga, la carga, la carga, la carga, la carga, la carga y la actividad..

¿Cómo puedo obtener esta URL redirigida final.

Esto es lo que intenté con el bucle hasta que obtengamos redirecciones. Aún no hemos obtenido la url deseada:

    public static String fetchRedirectURL(String url) throws IOException
    {
HttpURLConnection con =(HttpURLConnection) new URL( url ).openConnection();
//System.out.println( "orignal url: " + con.getURL() );
con.setInstanceFollowRedirects(false);
con.connect();


InputStream is = con.getInputStream();
if(con.getResponseCode()==301)
    return con.getHeaderField("Location");
else return null;
    }
    public static void main(String[] args) throws MalformedURLException, IOException {
String url="http://tinyurl.com/KindleWireless";
String fetchedUrl=fetchRedirectURL(url);
System.out.println("FetchedURL is:"+fetchedUrl);
while(fetchedUrl!=null)
{   url=fetchedUrl;
System.out.println("The url is:"+url);
    fetchedUrl=fetchRedirectURL(url);


}
System.out.println(url);

    }

Respuestas a la pregunta(7)

Su respuesta a la pregunta