Подтвердить что ты не робот

Не может получить местоположение заголовка ответа с помощью Java URLConnection

может кто-то любезно подсказать, что я здесь делаю не так?
Я пытаюсь получить местоположение заголовка для определенного URL с помощью Java, вот мой код:

URLConnection conn = url.openConnection();
String location = conn.getHeaderField("Location");  

это странно, так как я точно знаю URL, который я использую, чтобы вернуть заголовок Location, и использование методов, таких как getContentType() или getContentLength(), работает отлично

4b9b3361

Ответ 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;
}