【问题标题】:Play framework URL validator?播放框架 URL 验证器?
【发布时间】:2013-10-16 13:34:33
【问题描述】:

URL 来自 Play Framework 2 中的表单。我想检查一下 URL 是否真的存在。

所以似乎可以通过结合两种方法来完成。

模型中是否有使用注解的内置类似功能?

How to create a custom validator in Play Framework 2.0?

How to check if a URL exists or returns 404 with Java?

编辑:对于赏金,您可以提供 URL 验证器的实现(不是内置)。

【问题讨论】:

    标签: 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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多