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重定向)的主要内容,如果未能解决你的问题,请参考以下文章
通过 HTTP 302 重定向从 WebClient 获取位置?