Как получить URL после перенаправления, когда у вас есть неправильный код ответа?

У меня есть ссылка с редиректом на любой сайт. Мне нужно найти URL после всех перенаправлений. Мой код работает идеально, пока я не получу какой-либо плохой ответ, например "HTTP код ответа 401".

Например, мы сократим URL-адрес https://google.com/ до https://short.url/.

URLConnection con = new URL("https://short.url").openConnection();
InputStream is = con.getInputStream();
URLAfterRedirect = String.valueOf(con.getURL());
is.close();

Итак, если запрос в порядке, мы получили URL ( https://google.com/) после перенаправления. Но если есть какой-то код ответа, он выдает мне исключение с URL, который мне нужен.

java.io.IOException: Server returned HTTP response code: 401 for URL: https://google.com

Как получить этот URL после того, как я успешно перехватил исключение?

1 ответ

Попробуй это:

URLConnection con = new URL("https://short.url").openConnection();

con.setInstanceFollowRedirects(false);
String new_url = con.getHeaderField("Location");
con = new URL(new_url).openConnection();
InputStream is = con.getInputStream();
URLAfterRedirect = String.valueOf(con.getURL());
is.close();
Другие вопросы по тегам