2011-03-05 6 views
11

I 인증 보호 URL이 있습니다 www.domain.com/alias를자바, 안드로이드, URL을 해결 URI 리디렉션

이 다른 URL 반환 요청시 : www.another.com/resource.mp4를 (보호되지 않음)

Java에서 주어진 URL로부터 실제 URL을 반환하는 메소드가 있는지 알고 싶습니다. 다음과 같음 : second = resolve (first)

첫 번째 로딩을 시도하고 위치 속성을 읽으려고합니다.하지만 자바 전문가가 아니기 때문에 Java 이미이 문제에 직면 해있다.

답변

40

이것은 URL 리디렉션과 관련하여 사용하던 문제입니다.

URL url = new URL(url); 
HttpURLConnection ucon = (HttpURLConnection) url.openConnection(); 
ucon.setInstanceFollowRedirects(false); 
URL secondURL = new URL(ucon.getHeaderField("Location")); 
URLConnection conn = secondURL.openConnection(); 

은 "마법"여기이 2 단계에서 발생 : 다음 코드 시도 기본 InstanceFollowRedirects으로

ucon.setInstanceFollowRedirects(false); 
URL secondURL = new URL(ucon.getHeaderField("Location")); 

true로 설정됩니다,하지만 당신은 두 번째 캡처 false로 설정하려면 URL. 첫 번째 URL에서 두 번째 URL을 가져 오려면 "위치"라는 헤더 필드를 가져와야합니다.

+0

답장을 보내 주셔서 감사합니다. url.openConnection()에 인증을 추가 하시겠습니까? 나머지 애플 리케이션에서는 HttpClient와 execute() 메서드를 사용하여 UsernamePasswordCredentials를 전달하여 인증을 통과시킵니다. – sosergio

+0

저는 httpClient에 익숙하지 않고 실행하기가 어렵지만 일반적인 URL 클래스를 사용하여 간단한 안내서를 보여줄 수 있습니다. http://blogs.deepal.org/2008/01/sending-basic-authentication-using -url.html –

+0

도 문의하십시오. http://stackoverflow.com/questions/496651/connecting-to-remote-url-which-requires-authentication-using-java –

0

아래 그림과 같이 레이어 7 프로토콜 필터를 사용하여 MikroTik 라우터가있는 사이트에서이 문제를 해결했습니다. 이것은 기기가 WiFi 네트워크에서 (분명히) 꺼지는 것을 돕지는 않지만 적어도 집에 연결되거나 무선 네트워크를 작동 할 때 집행 유예를 제공합니다. 지금

/ip firewall layer7-protocol 
add comment="Frigging javascript redirects on chrome browsers" \ 
    name=Javascript_Redirect \ 
    regexp="^.+(spaces.slimspot.com|mostawesomeoffers.com).*\$" 

실제로이 트래픽을도 비슷한 방법으로 이러한 리디렉션을 차단할 수 레이어 7 필터링 능력을 가지고 밖으로

/ip firewall filter 
add action=drop chain=forward comment=\ 
    "Block and log Javascript_Redirect L7 Protocol" layer7-protocol=\ 
    Javascript_Redirect log=yes log-prefix=JSredirect_ 

다른 방화벽 필터링 :

첫째, 프로토콜 정의를 작성 .

관련 문제