0

我必须获取一些短网址的重定向网址,以检查我是否可以下载最终页面。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。

在能够调用 getRedirectLocations 方法之前,有什么方法可以对 URI 对象进行编码?

4

1 回答 1

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();
于 2014-10-17T09:40:23.800 回答