Java 获取网络重定向URL(302重定向)

Posted fnlingnzb-learner

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 获取网络重定向URL(302重定向)相关的知识,希望对你有一定的参考价值。

方法1:

 1 import java.net.HttpURLConnection;
 2 import java.net.URL;
 3  
 4 import org.junit.Assert;
 5 import org.junit.Test;
 6  
 7 public class GetRedirectUrlTest 
 8     @Test
 9     public void test_getRedirectUrl() throws Exception 
10         String url="http://www.baidu.com/link?url=ByBJLpHsj5nXx6DESXbmMjIrU5W4Eh0yg5wCQpe3kCQMlJK_RJBmdEYGm0DDTCoTDGaz7rH80gxjvtvoqJuYxK";
11         String expectUrl="http://www.zhihu.com/question/20583607/answer/16597802";
12         String redictURL = getRedirectUrl(url);
13         Assert.assertEquals(expectUrl, redictURL);
14     
15     
16     /**
17      * 获取重定向地址
18      * @param path
19      * @return
20      * @throws Exception
21      */
22     private String getRedirectUrl(String path) throws Exception 
23         HttpURLConnection conn = (HttpURLConnection) new URL(path)
24                 .openConnection();
25         conn.setInstanceFollowRedirects(false);
26         conn.setConnectTimeout(5000);
27         return conn.getHeaderField("Location");
28     
29 

 

方法2:

 1 /**
 2      * 处理跳转链接,获取重定向地址
 3      * @param url   源地址
 4      * @return      目标网页的绝对地址
 5      */
 6     public String getAbsUrl(String url)
 7         CloseableHttpClient httpclient = HttpClients.createDefault();
 8         HttpClientContext context = HttpClientContext.create();
 9         HttpGet httpget = new HttpGet(url);
10         CloseableHttpResponse response = null;
11         String absUrl = null;
12         try 
13             response = httpclient.execute(httpget, context);
14             HttpHost target = context.getTargetHost();
15             List<URI> redirectLocations = context.getRedirectLocations();
16             URI location = URIUtils.resolve(httpget.getURI(), target, redirectLocations);
17             System.out.println("Final HTTP location: " + location.toASCIIString());
18             absUrl = location.toASCIIString();          
19         catch(IOException e)
20             e.printStackTrace();
21         catch (URISyntaxException e)          
22             e.printStackTrace();
23         finally 
24             try 
25                 httpclient.close();
26                 response.close();
27              catch (IOException e)                
28                 e.printStackTrace();
29             
30         
31         return absUrl;
32     

 

以上是关于Java 获取网络重定向URL(302重定向)的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 获取 302 重定向 url

Java 中的 URL 重定向返回 302 而不是 301

通过 HTTP 302 重定向从 WebClient 获取位置?

JAVA如何获得服务器端重定向后的URL?

如何在Elastic Load Balancer运行状况检查中获取302重定向的URL?

如何用 PHP 实现 302 重定向到其他 URL