다른 URL로 리디렉션되고 다른 URL로 리디렉션되는 URL이 있으며 최종 도메인을 얻으려고합니다. 나는 리디렉션을 연결할 때 일어날 것이라고 생각하지만,이 코드를 실행 그렇지 않으면 저에게 말한다 :URL 리디렉션은 언제 발생합니까?
public static void main(String[] args)
{
System.out.println(resolveEndDomain("http://goo.gl/ELHEjl"));
}
private static String resolveEndDomain(String deepLink)
{
HttpURLConnection httpConnection = null;
try
{
httpConnection = (HttpURLConnection) new URL(deepLink).openConnection();
//httpConnection.getResponseCode();
}
catch (Exception e)
{
e.printStackTrace();
}
return httpConnection.getURL().getHost();
}
그래서, 내가 그것을 실행하면, 그냥 나에게 goo.gl
을 줄 것이다. 그러나 응답 코드를 얻기 위해 줄의 주석을 지우면 끝 도메인에서 가져와 www.thomann.de
을 인쇄합니다. getHeaderFields()
, getContent()
또는 이와 유사한 문자를 사용하면 connect()
이 도움이되지 않습니다. 나는 그 응답들에 관심이 없기 때문에 어떻게하면 갈 수 있고 리디렉션을 해결할 수 있습니까? 연결은 효과적으로 발생합니까?
리디렉션은 일반적으로 클라이언트에게 다른 곳을 보도록 지시하는 서버의 응답입니다. 따라서 리디렉션은 일반적으로 서버 측에서 보내지 만 클라이언트는이를 따라야합니다. http 상태 코드를 확인하면 리디렉션되는 위치가 응답에 있음을 나타내는 301 또는 302가 표시됩니다. – Thomas
'www.thoman.de'의 문제점. 나는 그것이 당신이 찾고있는 가치라고 말하지만 그렇지 않습니까? – SJuan76
@ 토마스 아니요, 처음에는'HttpURLConnection.setFollowRedirects (false)'를 호출하면 코드가 301에 불과합니다. 그러나 false를 지정하지 않으면 링크를 자동으로 따라 가야하며 사실 getResponseCode()를 호출하면 200이됩니다. –