0

최종 페이지를 다운로드 할 수 있는지 확인하기위한 짧은 URL에 대한 리디렉션 URL을 얻어야합니다. HttpHead는 최종 도착 URL을 가져 오는 데 사용됩니다 (아래 코드 참조).리디렉션 URL을 검색하기 전에 Apache HttpHead를 사용한 URI 인코딩

HttpClient client = HttpClientBuilder.create().build(); 

HttpHead httpHead = new HttpHead("http://bit.ly/1DfSWSs"); 

HttpClientContext context = HttpClientContext.create(); 
client.execute(httpHead, context); 
List<URI> redirectLocations = context.getRedirectLocations(); 
if (redirectLocations != null && !redirectLocations.isEmpty()) { 
    for (URI redirectURI : redirectLocations) { 
     //TODO print all 
    } 
} 

코드의 URL 예제에 문제가 있습니다. 리디렉션 URL에 공백이 있으므로 URI를 만들 수 없습니다.

getRedirectLocations 메서드를 호출하기 전에 URI 개체를 인코딩 할 수있는 방법이 있습니까?

답변

1

사용자 리디렉션 전략은 지금 당장 그것을 시도 할 것이다, 당신의 친구

CloseableHttpClient client = HttpClientBuilder.create() 
     .setRedirectStrategy(new DefaultRedirectStrategy() { 
      @Override 
      protected URI createLocationURI(final String location) throws ProtocolException { 
       // One can try to rewrite malformed redirect locations 
       //at this point 
       return super.createLocationURI(location); 
      } 
     }) 
     .build(); 
+0

감사합니다. – EnterSB

+0

잘 작동합니다. 다시 한번 감사드립니다. – EnterSB