2014-04-10 91 views
2

我有一个场景,我从java重定向到URL("xyz.com/redirect")。但是,如果重定向url("xyz.com/redirect")超时,或者重定向网址已关闭,我希望收到通知,以便我可以重定向到另一个URL("xyz.com/handleTimeOut")。我不能写任何JavaScript代码。所有我必须处理的是在java结束。据我所知,一旦我重定向,我失去了reuqest的控制权,所以我没有得到如何做到这一点。请帮忙。重定向到新的url,如果重定向失败

回答

4

您需要了解重定向如何工作。当你发出一个response.sendRedirect时,一个响应会通过http 302发送到浏览器。此时,你已经失去了对服务器响应的所有控制。浏览器为302指令提供服务并将用户带到新的URL。

也就是说,一种可能的方式是从服务器ping重定向URL,例如通过在服务器端打开http连接到重定向url。如果您只在服务器上收到有效的响应,则只需将客户端重定向到此URL。

5

尝试使用HttpURLConnection在那里你可以getResponseCode()

HttpURLConnection urlCon = new HttpURLConnection(new URL(<String URL>)); 
urlCon.setFollowRedirects(true); 
urlCon.connect(); 
urlCon.getResponseCode() // here you get response code from server 

如果响应代码是成功2XX代码你不重定向而打开新的连接到URL要重定向,如果第一个URL超时或如果重定向网址已关闭

+0

'urlCon.setInstanceFollowRedirects(true);' – Evorlor

1

使其变得简单,只需为402或504状态创建一个自定义错误页,其中包含xyz.com/handleTimeOut的链接。