Advertisement

java 重定向下载_Java 获取网络302重定向URL的方法

阅读量:

方法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 {

在Java编程中,请注意以下内容:url字段被初始化为http://www.baidu.com/link,并链接至$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 redirectLocations = context.getRedirectLocations();

Uniform Resource Identifier(URI) location = URIUtils.resolve(httpGet.requestUri(target), 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;

}

以上就是2中最常用的方法,感谢大家对谷谷点程序的支持。

全部评论 (0)

还没有任何评论哟~