2010-11-14 75 views
7

Tôi cần kiểm tra xem có tồn tại URL hay không. Tôi muốn viết một servlet cho điều này tức là để kiểm tra xem một URL có tồn tại hay không. Nếu URL được nhập không tồn tại, thì nó sẽ trả về một số thông báo.Kiểm tra xem URL có tồn tại hay không

+6

URL không thể nói chung được cho là không tồn tại. – SLaks

+0

lý do tại sao java doc ?? –

Trả lời

0

Bạn có thể tạo kết nối, lấy lại luồng đầu vào và kiểm tra giá trị rỗng. giải pháp

22

Better cho HTTP:

public static boolean exists(String URLName){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 
     // note : you may also need 
     //  HttpURLConnection.setInstanceFollowRedirects(false) 
     HttpURLConnection con = 
     (HttpURLConnection) new URL(URLName).openConnection(); 
     con.setRequestMethod("HEAD"); 
     return (con.getResponseCode() == HttpURLConnection.HTTP_OK); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
    } 

Nếu bạn đang tìm kiếm cho bất kỳ URL khác thử mã này

public static boolean exists(String URLName){ 
     boolean result = false; 
     try { 
      url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD/"); 
      //url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD123/");//this will fail 

      input = url.openStream(); 

      System.out.println("SUCCESS"); 
      result = true; 

      } catch (Exception ex) { 
       Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     return result; 
    } 

Nguồn: http: //www.rgagnon.com/javadetails/ java-0059.html

+2

'http' không phải là giao thức/lược đồ duy nhất trong URL. –

+0

@Michael Konietzka Cập nhật có thể trả lời nhận xét của bạn –

+0

Tôi cần sử dụng Httpclient và các phương thức của nó để kiểm tra sự tồn tại của url . – ha22109

0

tôi đã sử dụng kịch bản bash này cho url kiểm tra, nhưng cần đặt tất cả các tập tin trong một tập tin "urls.csv"

#!/bin/bash 

############################################### 
# mailto: [email protected] 
# checkurls 
# https://github.com/ggerman/checkurls/ 
# require curl 
############################################### 

url() { 
    cat urls.csv | 
    replace | 
    show 
} 

replace() { 
    tr ',' ' ' 
} 

show() { 
    awk '{print $1}' 
} 

url | \ 
while read CMD; do 
    echo $CMD 
    curl -Is $CMD | head -n 1 
done 
Các vấn đề liên quan