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     }
  • 相关阅读:
    OpenCascade Ray Tracing Rendering
    Create New Commands in Tcl
    OpenCascade Modeling Algorithms Fillets and Chamfers
    OpenCascade Modeling Algorithms Boolean Operations
    Construction of Primitives in Open Cascade
    Open Cascade Data Exchange STL
    Tcl Tk Introduction
    Open Cascade DataExchange IGES
    Netgen mesh library : nglib
    Hello Netgen
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/11429834.html
Copyright © 2011-2022 走看看