方法1:

 import java.net.HttpURLConnection;
import java.net.URL; import org.junit.Assert;
import org.junit.Test; public class GetRedirectUrlTest {
@Test
public void test_getRedirectUrl() throws Exception {
String url="http://www.baidu.com/link?url=ByBJLpHsj5nXx6DESXbmMjIrU5W4Eh0yg5wCQpe3kCQMlJK_RJBmdEYGm0DDTCoTDGaz7rH80gxjvtvoqJuYxK";
String expectUrl="http://www.zhihu.com/question/20583607/answer/16597802";
String redictURL = getRedirectUrl(url);
Assert.assertEquals(expectUrl, redictURL);
} /**
* 获取重定向地址
* @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;
}

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

  1. Java获取此次请求URL以及服务器根路径的方法

    http://www.jb51.net/article/71693.htm ********************************************** 本文介绍了Java获取此次请求 ...

  2. Java获取网络IP

    Java获取获取网络IP,浅尝辄止咯- import java.net.InetAddress; import java.net.UnknownHostException; /** * 获取网络IP ...

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

    其实Java 使用HttpURLConnection下载的的时候,会自动下载重定向后的文件,但是我们无法获知目标文件的真实文件名,文件类型,用下面的方法可以得到真实的URL,下面是一个YOUKU视频的 ...

  4. java获取网络ip地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  5. java获取请求的url地址

    1.获取全路径request.getRequestURL(); //得到http://localhost:8888/CRM/loginController/login 2.获取协议名和域名reques ...

  6. java获取request的url方法区别

    1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数.2.request.getRequestURI() ...

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

    //此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载,    蓝色部分是睡眠时间,自我感觉不用写  ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神 ...

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

    有时候我们会在开发中,经常会遇到有URL 301或 302重定向的情况,这时候我们可能需要获取重定向之后的url,下面我们介绍一下几种获取重定向url的方法: 1.用get_headers函数php自 ...

  9. 正向代理 forward proxy、反向代理 reverse proxy、透明代理 transparent proxy nginx反向代理原理和配置讲解 防止外部客户机获取内部内容服务器的重定向 URL 缓存命中

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 - Edison Chou - 博客园http://www.cnblogs.com/edisonchou/p/4126742.html 图 ...

随机推荐

  1. springmvc controller层接收List类型的参数

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...

  2. jvm堆、栈、String常量池

    原文地址:http://blog.csdn.net/tophawk/article/details/78704074 程序计数器:它的生命周期与线程相同,线程私有.较小的内存区域,用以完成分支.循环. ...

  3. 出现 sudo: unable to resolve host XXX 信息解决办法

    Ubuntu环境,  每次执行sudo 就出现这个警告讯息:sudo: unable to resolve host XXX虽然sudo 还是可以正常执行,是机器在反解上的问题, 所以就直接从/etc ...

  4. EXCEPTION_HIJACK(0xe0434f4e)异常的抛出过程

    样例工程 在VS2013里新建一个C#控制台工程,写下如下代码: using System; using System.Collections.Generic; using System.Linq; ...

  5. ABP 依赖报错

    一般是自己写的Service 没有实现IApplicationService,和没有继承ApplicationService

  6. Qt常用类——Qstring

    Qstring有一些方面跟C/C++中的string的使用,例如把一个字符串追加到另一个字符串中,也是用“+”.也有append函数等. 下面是是Qstring的一些常用的具体函数示例: Qt的QSt ...

  7. python3 ini文件读写

    import configparser config = configparser.ConfigParser() file = 'config.ini' config.read(file) confi ...

  8. SUSE12.2 编译usbutils

    折腾了两天,终于交叉编译出来lsusb命令可以在单板上跑起来,记录一下 1:编译eudev下载地址:https://dev.gentoo.org/~blueness/eudev/,版本eudev-3. ...

  9. Linux将一个文件夹或文件夹下的所有内容复制或移动到另一个文件夹

    1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...

  10. docker 学习操作记录 5-2

    记录5-2 root@53d0a643a2c7:/# quit bash: quit: command not found root@53d0a643a2c7:/# exit exit -->@ ...