首页 > 编程语言 >Java根据原始URL获取网络重定向后的URL

Java根据原始URL获取网络重定向后的URL

时间:2023-07-18 17:46:09浏览次数:35  
标签:return 重定向 URL location context Java conn String

方法1:

 /**
      * 获取重定向地址
      * @param path 原地址
      * @return
      * @throws Exception
      */
     private String getRedirectUrl(String path) throws Exception {
         HttpURLConnection conn = (HttpURLConnection) new URL(path)
                 .openConnection();
         conn.setInstanceFollowRedirects(false);
         conn.setConnectTimeout(5000);
         return conn.getHeaderField("Location");
     }
 }

方法2:

/**
       * 处理跳转链接,获取重定向地址
       * @param url   源地址
       * @return      目标网页的绝对地址
       */
      public String getAbsUrl(String url){
          CloseableHttpClient httpclient = HttpClients.createDefault();
          HttpClientContext context = HttpClientContext.create();
          HttpGet httpget = new HttpGet(url);
         CloseableHttpResponse response = null;
         String absUrl = null;
         try {
             response = httpclient.execute(httpget, context);
             HttpHost target = context.getTargetHost();
             List<URI> redirectLocations = context.getRedirectLocations();
             URI location = URIUtils.resolve(httpget.getURI(), target, redirectLocations);
             System.out.println("Final HTTP location: " + location.toASCIIString());
             absUrl = location.toASCIIString();          
         }catch(IOException e){
             e.printStackTrace();
         }catch (URISyntaxException e) {         
             e.printStackTrace();
         }finally {
             try {
                 httpclient.close();
                 response.close();
             } catch (IOException e) {               
                 e.printStackTrace();
             }
         }
         return absUrl;
     }

 

标签:return,重定向,URL,location,context,Java,conn,String
From: https://www.cnblogs.com/privateLogs/p/17563652.html

相关文章

  • Java基本语法
    Java基本语法注释1单行注释2多行注释3文档注释//输出一个Helloworld单行注释/**多行注释**//***文档注释*@DescriptionHelloWorld*@AuthorDunCan*/标识符-Java所有的组成部分都需要名字。###标识符注意点1所有......
  • 设计模式-外观模式在Java中的使用示例
    场景外观模式外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。示例自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、......
  • java定时定时任务quartz
    Quartz是一个Java版开源定时调度器,功能强悍,使用方便。一、核心概念1.Job表示一个工作,要执行的具体内容,此接口只有一个方法voidexecute(JobExecutionContextcontext)2.JobDetailJobDetail表示一个具体的可以执行的调度程序,Job是这个可以执行程序所要执行的内容内容,JobDetai......
  • Java 中 Json 扁平化与去扁平化处理
    引入依赖<!--依赖--><dependency><groupId>com.github.wnameless.json</groupId><artifactId>json-flattener</artifactId><version>0.16.4</version></dependency>demopublicstaticvoid......
  • CURL常用参数
    CURLcurl-XPOST-i'http://10.25.5.36/service/api/v1/province/registerSourceQuery'-H"Content-Type:application/json"-d'{"messageHeader":{"accessAccount":"43198521900","sign":"43198......
  • Java程序运行机制
    Java程序运行机制1编译型complie-就是一次性把活干完,量大,但是后续有修改需要重新干,比如C/C++,2解释型-用一点,解释一点,性能稍微损失javaScriptpython3程序运行机制4Java偏向解释性语言,不过具有两种类型的特性,先编译,后解释......
  • 在不改变语言的前提下如何推进Java的不断演进
    JamesGosling在“TheFeelofJava”中说到:Java是一种蓝领语言,它并非博士的论文素材而是用于完成工作的语言。各式各样的程序员都非常熟悉Java,因为在设计Java之初我就坚持这样一种观点:选择久经考验的东西而非仅仅是听起来很美。Java所获得的巨大成功证明了这种设计方式是正确的,......
  • Python的布尔值转换为JavaScript的布尔值
    在Python后端开发中,我们返回布尔值通常为True,False。而不是'true','false',但在JavaScript必须使用小写的true和false,且不是字符串。这时就必须在前端对数据进行转换了。后端返回{"status":200,"data":["show":True,"verf":False]}前端转换代码response.data.forEach......
  • java HelloWorld
    HelloWorld1新建一个文件夹,存放代码2新建一个java文件-java后缀名为.java-Hello.java-[注意点]系统可能没有显示文件后缀名,我们需要手动打开3编写代码publicclassHello{publicstaticvoidmain(String[]args){System.out.println("HelloWorld!"......
  • java-自动建表-按月份
    采用的是xxl-job任务调度importorg.apache.commons.io.FileUtils;importcom.xxl.job.core.biz.model.ReturnT;importcom.xxl.job.core.handler.IJobHandler;importcom.xxl.job.core.handler.annotation.XxlJob;importorg.slf4j.Logger;importorg.slf4j.LoggerFactor......