java, android, 解析 url, 获取重定向 uri
Posted
技术标签:
【中文标题】java, android, 解析 url, 获取重定向 uri【英文标题】:java, android, resolve an url, get redirected uri 【发布时间】:2011-07-09 10:37:43 【问题描述】:我有一个受身份验证保护的网址:www.domain.com/alias
请求时将返回另一个网址:www.another.com/resource.mp4(不受保护)
我想知道 Java 中是否存在一种方法,该方法将返回给定 URL 的真实 url。 类似的东西:第二=解决(第一)
我正在考虑加载第一个并尝试读取响应可能是位置属性,但由于我不是 Java 专家,我想知道 Java 是否已经面临这个问题。
【问题讨论】:
【参考方案1】:这是我曾经遇到的关于 URL 重定向的问题。试试下面的代码:
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”的标头字段。
【讨论】:
谢谢你的回答,你能帮忙添加身份验证到 url.openConnection() 吗?在我的应用程序的其余部分,我使用 HttpClient 和 execute() 方法传递 UsernamePasswordCredentials 来传递身份验证。 恐怕我对httpClient和execute不是很熟悉,但是可以给你一个使用普通URL类的简单指南:blogs.deepal.org/2008/01/… 另请咨询:***.com/questions/496651/… @HakanOzbay +1 完美! 是否需要尝试/捕获?这就是我的 Intelliji 提示我做的事情【参考方案2】:我已经通过使用第 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 层过滤能力的防火墙也可以以类似的方式阻止这些重定向。
【讨论】:
以上是关于java, android, 解析 url, 获取重定向 uri的主要内容,如果未能解决你的问题,请参考以下文章
Android - 使用 JSOUP 解析 JS 生成的 url