比较2个URL是否具有相同的原始目标

时间:2012-05-13 17:47:32

标签: java

我有两个网址,因为Java Strings假设“youtube.com”和“goo.gl/ur2l”并且我想创建一个函数

boolean isSame(String url1, String url2)

返回天气,两个网址最终都指向同一个网址。 如何在java中实现?

4 个答案:

答案 0 :(得分:3)

为每个URL执行HTTP请求并检查HTTP代码。如果是重定向(30*),请提取Location HTTP标头,该标头应为“原始”网址。

答案 1 :(得分:1)

你需要将字符串转换为ip地址,然后比较它们。 这样的事情:

   InetAddress address = null;

    byte[] ip = new byte[0];

    try {
    address = InetAddress.getByName("google.com");
    ip = address.getAddress();
    } catch (UnknownHostException e) {
    e.printStackTrace();
    }

答案 2 :(得分:1)

我刚刚将http://www.youtube.com网址缩短为http://bit.ly/9b2Y3D。现在,当我使用访问后者时,我得到:

$ curl http://bit.ly/9b2Y3D
[...]
> GET /9b2Y3D HTTP/1.1
[...]
< HTTP/1.1 301 Moved
[...]
< Location: http://youtube.com/

你看,缩短的URL返回302而不是200 OK。 Location标题也非常有趣。我想你现在有很多关于初学者的信息。尝试HttpClient并提取状态代码和Location。然后查看URL类,特别是它如何实现equals()

答案 3 :(得分:1)

您需要按照302重定向,直到找到200个http代码。请放置配置以避免遵循无限重定向:)