zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    CentOS系统下NFS服务器
    网络封包分析
    Android端抓包方法
    SQL Server 2008从基础开始学习的历程(1)------创建表与查询
    序--CentOS6.5 mini 安装和基本配置
    MonkeyRunner(猴哥快跑)常用类方法总结
    python 开源数据抓取框架scrapy
    pycharm最新版注册
    python flask下传数据到js
    centos打架django + mysql环境
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/11429834.html
Copyright © 2011-2022 走看看