我有一个场景,我从java重定向到URL("xyz.com/redirect")
。但是,如果重定向url("xyz.com/redirect")
超时或重定向网址已关闭,我希望收到通知,以便我可以重定向到另一个URL("xyz.com/handleTimeOut")
。我不能写任何javascript代码。所有我必须处理的是java端。据我所知,一旦我重定向,我失去了对reuqest的控制权,所以我没有得到如何实现这一目标。请帮忙。
答案 0 :(得分: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代码,则不要重定向,否则请在第一个网址超时或重定向网址已关闭的情况下重新定位要重定向的网址
答案 1 :(得分:4)
您需要了解重定向的工作原理。当您发出response.sendRedirect时,会使用http 302将响应发送到浏览器。此时您已失去对服务器上响应的所有控制权。浏览器为302指令提供服务,并将用户带到新URL。
也就是说,一种可能的方法是从服务器ping重定向URL,方法是在服务器端打开重定向URL的http连接。如果您在服务器上收到有效响应,则将客户端重定向到此URL。
答案 2 :(得分:1)
简化并只创建402或504状态的自定义错误页面,其中包含xyz.com/handleTimeOut的链接。