2013-10-09 2 views
1

URL은 Play Framework 2의 양식에서 가져옵니다. URL이 실제로 있는지 확인하고 싶습니다.프레임 워크 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 유효성 검사기의 구현을 제공 할 수 있습니다.

답변

4

은 기본적으로 당신은 대상 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; 
    } 
}