我有两个网址,因为Java Strings假设“youtube.com”和“goo.gl/ur2l”并且我想创建一个函数
boolean isSame(String url1, String url2)
返回天气,两个网址最终都指向同一个网址。 如何在java中实现?
答案 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访问后者时,我得到:
$ 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代码。请放置配置以避免遵循无限重定向:)