0

最終ページをダウンロードできるかどうかを確認するために、いくつかの短い URL のリダイレクト URL を取得する必要があります。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 に答える