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

网友投稿 681 2022-12-29


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://baidu.com/link?url=ByBJLpHsj5nXx6DESXbmMjIrU5W4Eh0yg5wCQpe3kCQMlJK_RJBmdEYGm0DDTCoTDGaz7rH80gxjvtvoqJuYxK";

String expectUrl="http://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.getTseYlHargetHost();

List 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;

}

以上就是2中最常用的方法,感谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务为服务网关(微服务网关架构图)
下一篇:视频接口测试工具(视频接口测试工具有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~