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     }

原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/11429834.html

时间: 2024-11-04 00:43:40

Java 获取网络重定向URL(302重定向)的相关文章

我给女朋友讲编程html系列(11)—网页重定向,301重定向,302重定向

虽然以前只在淘宝买东西,不过现在对其他电商也不排斥了,就比如京东吧,今天就以京东为例. 你在浏览器中输入“360buy.com”,看看发生了什么? 另外输入“jingdong.com”,再看看发生了什么?看看网址变了没有? 见证奇迹,请看下图: 不管你输入哪个网址,都会转到这个网址. 这其实叫“重定向”,那么怎么实现网站重定向呢? 任意新建一个网页,如a.html,名字随便叫,只要后缀是.html就行了.输入下面的html代码: <html> <head> <meta htt

Java获取网络IP

Java获取获取网络IP,浅尝辄止咯- 1 import java.net.InetAddress; 2 import java.net.UnknownHostException; 3 4 /** 5 * 获取网络IP 6 * 1.获取本地的IP地址 7 * 2.获取本机的服务器名称 8 * 3.获取远程服务器的主机IP地址 9 * 4.获取远程服务器的所有主机IP 10 * 11 * 网络编程: 12 * InetAddress 是用来封装IP地址相关信息的类 13 * getLocalHos

Java 获取网络重定向文件的真实URL

其实Java 使用HttpURLConnection下载的的时候,会自动下载重定向后的文件,但是我们无法获知目标文件的真实文件名,文件类型,用下面的方法可以得到真实的URL,下面是一个YOUKU视频的例子. import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; public class Test2 { public static void main(String[] args) th

java获取request的url方法区别

1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数.2.request.getRequestURI() 得到的是request URL的部分值,并且web容器没有decode过的 3.request.getContextPath() 返回 the context of the request. 4.request.getServletPath() 返回调用servlet的部分url. 5.reque

java获取请求的url地址

1.获取全路径request.getRequestURL(); //得到http://localhost:8888/CRM/loginController/login 2.获取协议名和域名request.getScheme(); //得到协议名 例如:httprequest.getServerName(); //得到域名 localhost 3.获取请求所有参数 //map类型request.getParameterMap() 4.获取项目名request.getContextPath(); /

301与302重定向的区别

1.什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址. 2.什么是302重定向? 302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect. 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的UR

Android中获取网络数据时的分页加载

//此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载,    蓝色部分是睡眠时间,自我感觉不用写  ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神指教 public class Fragment1 extends Fragment{               //加载的第几页        private int index = 0;            private List<News> news=new ArrayList<

【转】PHP获取重定向URL的几种方法

有时候我们会在开发中,经常会遇到有URL 301或 302重定向的情况,这时候我们可能需要获取重定向之后的url,下面我们介绍一下几种获取重定向url的方法: 1.用get_headers函数php自带的get_headers函数可以获取服务器响应一个HTTP请求所发送的所有标头,我们可以尝试用该函数实现. function get_redirect_url($url){ $header = get_headers($url, 1); if (strpos($header[0], '301′)

Java访问网络url,获取网页的html代码

在Java中,Java.net包里面的类是进行网络编程的,其中,java.net.URL类和java.net.URLConection类是编程者方便地利用URL在Internet上进行网络通信.有两种方法可以用来访问Internet. 一是使用URL类的openStream()方法: openStream()方法与制定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据: openStream()方法只能读取网络资源. 二是使用URL类的openConnection()方