Не может получить местоположение заголовка ответа с помощью Java URLConnection
может кто-то любезно подсказать, что я здесь делаю не так?
Я пытаюсь получить местоположение заголовка для определенного URL с помощью Java, вот мой код:
URLConnection conn = url.openConnection();
String location = conn.getHeaderField("Location");
это странно, так как я точно знаю URL, который я использую, чтобы вернуть заголовок Location, и использование методов, таких как getContentType() или getContentLength(), работает отлично
Ответы
Ответ 1
Возможно, заголовок Location
возвращается как часть ответа на перенаправление. Если это так, URLConnection
обрабатывает перенаправление автоматически, выдавая второй запрос указанному ресурсу, поэтому вам необходимо отключить его:
((HttpURLConnection) conn).setInstanceFollowRedirects(false);
EDIT:
Если вам действительно нужен URL-адрес перенаправления и вы не хотите отключать обработку переадресации, вы можете вызвать getURL()
вместо этого (после установления соединения).
Ответ 2
Просто выполните ответ axtavt... Если URL имеет несколько переадресаций, вы можете сделать что-то подобное, чтобы получить прямую ссылку:
String location = "http://www.example.com/download.php?getFile=1";
HttpURLConnection connection = null;
for (;;) {
URL url = new URL(location);
connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(false);
String redirectLocation = connection.getHeaderField("Location");
if (redirectLocation == null) break;
location = redirectLocation;
}