Java 获取网络重定向URL(302重定向)

java

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

以上是 Java 获取网络重定向URL(302重定向) 的全部内容, 来源链接: utcz.com/z/391346.html

回到顶部