2010-10-14 34 views

Trả lời

40

Bạn có thể thử tạo một đối tượng java.net.URL trong số đó. Nếu nó không phải là một URL thích hợp, một MalformedURLException sẽ bị ném.

+2

Chỉ cần được rõ ràng , nó sẽ chỉ ném một MalformedURLException 'nếu không có giao thức được chỉ định, hoặc một giao thức không xác định được tìm thấy'. Không giống như UrlValidator của Apache, không có xác thực bổ sung nào được thực hiện. – dogbane

+0

Thực tế nó cũng thực hiện các kiểm tra khác, ví dụ: số cổng. – Grodriguez

+0

Tôi trích dẫn rằng từ javadocs http://download.oracle.com/javase/6/docs/api/java/net/URL.html. Họ không nói bất kỳ kiểm tra nào khác. – dogbane

34

Bạn có thể sử dụng UrlValidator từ commons-validator. Nó sẽ giúp bạn tiết kiệm từ việc viết mã nơi luồng logic được hướng dẫn bởi bộ nhớ đệm một ngoại lệ, thường được coi là một thực hành không tốt. Trong trường hợp này, tuy nhiên, tôi nghĩ rằng nó là tốt để làm như những người khác đề nghị, nếu bạn di chuyển chức năng này vào một phương pháp hữu ích được gọi là isValidUrl(..)

+0

+1 cho là khác nhau :) – willcodejavaforfood

+0

không cần phải lặp lại câu trả lời của người khác;) – Bozho

+0

nó sẽ không cho phép gạch dưới trong tên máy chủ –

6

Bổ sung Bozho câu trả lời, để đi thực tế hơn:

  1. Tải apache commons package và giải nén nó. binaries
  2. Bao gồm commons-validator-1.4.0.jar trong đường dẫn xây dựng java của bạn.
  3. thử nghiệm nó với mẫu mã này (reference):

    //...your imports 
    
    import org.apache.commons.validator.routines.*; // Import routines package! 
    
    public static void main(String[] args){ 
    
    // Get an UrlValidator 
    UrlValidator defaultValidator = new UrlValidator(); // default schemes 
    if (defaultValidator.isValid("http://www.apache.org")) { 
        System.out.println("valid"); 
    } 
    if (!defaultValidator.isValid("http//www.oops.com")) { 
        System.out.println("INvalid"); 
    } 
    
    // Get an UrlValidator with custom schemes 
    String[] customSchemes = { "sftp", "scp", "https" }; 
    UrlValidator customValidator = new UrlValidator(customSchemes); 
    if (!customValidator.isValid("http://www.apache.org")) { 
        System.out.println("valid"); 
    } 
    
    // Get an UrlValidator that allows double slashes in the path 
    UrlValidator doubleSlashValidator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES); 
    if (doubleSlashValidator.isValid("http://www.apache.org//projects")) { 
        System.out.println("INvalid"); 
    } 
    
  4. Run/Debug

8

Nếu bạn lập trình trong Android, bạn có thể sử dụng android.webkit.URLUtil để kiểm tra.

URLUtil.isHttpUrl(url) 
URLUtil.isHttpsUrl(url) 

Hy vọng điều đó sẽ hữu ích.

+7

Điều này không thực sự kiểm tra nếu url của nó nó chỉ kiểm tra nếu có http: // ban đầu, những gì bạn cần với điều đó là URLUtil.isValidUrl (url) –

+0

Thủ trưởng nhanh lên rằng URL này được gọi là URLUtil ... chứ không phải URLUtil * S *. – Tommie

-1

Chức năng này xác thực URL và trả về đúng (URL hợp lệ) hoặc sai (URL không hợp lệ).

public static boolean isURL(String url) { 
    try { 
     new URL(url); 
     return true; 
    } catch (Exception e) { 
     return false; 
    } 
} 

Hãy chắc chắn để import java.net.URL;

6

Đối với Android chỉ cần thêm dòng này:

boolean isValid = URLUtil.isValidUrl("your.uri"); 
5

Ở đây bạn đi:

public static boolean isValidURL(String urlString) 
{ 
    try 
    { 
     URL url = new URL(urlString); 
     url.toURI(); 
     return true; 
    } catch (Exception exception) 
    { 
     return false; 
    } 
} 
2

Đối Spring Framework người sử dụng. Có: org.springframework.util.ResourceUtils#isUrl

Ví dụ

ResourceUtils.isUrl("https://stackoverflow.com/"); 
Các vấn đề liên quan