方法1:
1つの インポートjava.net.HttpURLConnectionの。 2つの インポートのjava.net.URL。 3 4 インポートorg.junit.Assert。 5 輸入org.junit.Test。 6 7 パブリック クラスGetRedirectUrlTestは{ 8 @Test 9 公共 ボイド test_getRedirectUrl()スロー例外{ 10 = "http://www.baidu.com/link?url=ByBJLpHsj5nXx6DESXbmMjIrU5W4Eh0yg5wCQpe3kCQMlJK_RJBmdEYGm0DDTCoTDGaz7rH80gxjvtvoqJuYxK"文字列のURLを。 11 文字列expectUrl = "http://www.zhihu.com/question/20583607/answer/16597802"; 12 列redictURL = getRedirectUrl(URL)。 13 Assert.assertEquals(expectUrl、redictURL)。 14 } 15 16 / ** 17 *获取重定向地址 18 * @paramの経路 19 * @return 20 * @throws 例外 21 * / 22 プライベート文字getRedirectUrl(文字列のパス)がスロー例外{ 23 HttpURLConnectionのCONN =(HttpURLConnectionの)新しいURL (経路) 24 .openConnection()。 25 conn.setInstanceFollowRedirects(偽)。 26 conn.setConnectTimeout(5000 )。 27 リターン conn.getHeaderField( "場所" ); 28 } 29 }
方法2:
1 / * 2つの *プロセスは、リダイレクションアドレスのリンクをジャンプ 。3 * @param URLアドレス源 。4 * @return 対象ページの絶対アドレス 。5 * / 6 パブリック文字getAbsUrl(文字列のURL){ 7 CloseableHttpClientのHttpClient = HttpClients.createDefault (); 8 HttpClientContextコンテキスト= HttpClientContext.create(); 9 HTTPGET HTTPGET = 新しい新しいHTTPGET(URL); 10 CloseableHttpResponse応答= NULL ; 11 文字absUrl = NULL ; 12 試み{ 13 応答= httpclient.execute(HTTPGET、コンテキスト)。 14 HttpHostターゲット= context.getTargetHost()。 15 リスト<URI> redirectLocations = context.getRedirectLocations()。 16 URI位置= URIUtils.resolve(httpget.getURI()、ターゲット、redirectLocations)。 17 のSystem.out.println( "最終HTTP場所:" + location.toASCIIString())。 18 absUrl = location.toASCIIString()。 19 } キャッチ(IOExceptionを電子){ 20 e.printStackTrace(); 21 } キャッチ(URISyntaxException電子){ 22 e.printStackTrace(); 23 } 最後に{ 24 のtry { 25 httpclient.close()。 26 response.close()。 27 } キャッチ(IOExceptionを電子){ 28 e.printStackTrace(); 29 } 30 } 31 リターンabsUrl。 32 }