0

Мне нужно получить URL перенаправления для некоторого короткого URL-адреса, чтобы проверить, могу ли я загрузить последнюю страницу. HttpHead используется для получения окончательного URL-адреса назначения (см. Код ниже).URI-кодировка с Apache HttpHead до перенаправления перенаправления URL-адресов

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 не может быть создан.

Это какой-либо способ кодировать объект URI перед тем, как вызвать метод getRedirectLocations?

ответ

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

Смежные вопросы