Java如何获取网络302重定向URL的方法

发布时间:2021-09-27 17:50 来源:亿速云 阅读:0 作者:小新 栏目: 开发技术

这篇文章主要介绍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 {    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;  }

免责声明:本站发布的内容(图片、视频和文字)以原创、来自互联网转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系QQ:712375056 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。