java,android,解析网址,重定向uri

时间:2011-03-05 15:03:25

标签: java android url redirect uri

我有受身份验证的网址:www.domain.com/alias

如果要求将返回另一个网址:www.another.com/resource.mp4(未受保护)

我想知道Java中是否存在一个方法,它将返回给定的url。 类似于:second = resolve(first)

我正在考虑加载第一个并尝试读取响应可能是location属性,但由于我不是java大师,我想知道Java是否已经面临这个。

2 个答案:

答案 0 :(得分:45)

这是我过去常常遇到的有关网址重定向的问题。请尝试以下代码:

URL url = new URL(url);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));
URLConnection conn = secondURL.openConnection();

这里的“神奇”发生在以下两个步骤中:

ucon.setInstanceFollowRedirects(false);
URL secondURL = new URL(ucon.getHeaderField("Location"));

默认情况下,InstanceFollowRedirects设置为true,但您希望将其设置为false以捕获第二个URL。为了能够从第一个URL获取第二个URL,您需要获取名为“Location”的标题字段。

答案 1 :(得分:0)

我已经通过使用第7层协议过滤器在我们拥有MikroTik路由器的网站上消除了这个问题,如下所示。这显然不能帮助设备远离WiFi网络,但至少在他们连接到家庭和/或工作WiFi网络时给他们一些缓解。

首先,创建协议定义:

/ip firewall layer7-protocol
add comment="Frigging javascript redirects on chrome browsers" \
    name=Javascript_Redirect \
    regexp="^.+(spaces.slimspot.com|mostawesomeoffers.com).*\$"

现在,要实际过滤此流量

/ip firewall filter
add action=drop chain=forward comment=\
    "Block and log Javascript_Redirect L7 Protocol" layer7-protocol=\
    Javascript_Redirect log=yes log-prefix=JSredirect_

具有第7层过滤能力的其他防火墙也可以以类似的方式阻止这些重定向。