【问题标题】:Play framework URL validator?播放框架 URL 验证器?
【发布时间】:2013-10-16 13:34:33
【问题描述】:
【问题讨论】:
标签:
java
validation
url
playframework-2.0
【解决方案1】:
基本上您需要对目标 URL 执行 HTTP HEAD 请求并检查您是否获得了可接受的响应代码。可接受的响应代码可能是 OK (200)、暂时移动 (???) 和其他代码,如果不是现在,至少很快就会导致该页面。
为什么是HEAD?因为GET 将下载整个页面而HEAD 将仅下载HTTP 标头。在这种情况下,这将花费更少的时间和时间不是朋友。 验证应该很快完成,并且发出 HTTP 请求需要时间。 在这几秒钟内(或更长,取决于服务器和网络负载),用户会想知道发生了什么并感到沮丧。除非您可以显示其中一个动画进度指示器,让他知道验证其输入需要一些时间。
您应该像那些密码强度验证器那样执行此操作,一旦焦点离开输入控件并且在显示结果的一侧有一个动画指示器,就会在后台 AJAX 调用中验证值。同时用户可以填写其他信息。
代码是这样的:
public class UrlExistenceValidator ... {
public boolean isValid(Object object) {
if (!(object instanceof String)) {
return false;
}
final String urlString = (String) object;
final URL url = new URL(urlString);
final HttpURLConnection huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("HEAD");
huc.connect();
final int code = huc.getResponseCode();
return code != 404;
}
}