can I check if a file exists at a URL?Tôi có thể kiểm tra xem tệp có tồn tại ở URL không?
Liên kết này rất tốt cho C#, còn về java. Tôi serach nhưng tôi không tìm thấy giải pháp tốt.
can I check if a file exists at a URL?Tôi có thể kiểm tra xem tệp có tồn tại ở URL không?
Liên kết này rất tốt cho C#, còn về java. Tôi serach nhưng tôi không tìm thấy giải pháp tốt.
Nó khá giống với Java. Bạn chỉ cần đánh giá mã Phản hồi HTTP:
final URL url = new URL("http://some.where/file.html");
url.openConnection().getResponseCode();
Ví dụ hoàn chỉnh hơn có thể tìm thấy here.
Đóng góp phiên bản sạch sẽ dễ dàng sao chép và dán.
try {
final URL url = new URL("http://your/url");
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
int responseCode = huc.getResponseCode();
// Handle response code here...
} catch (UnknownHostException uhe) {
// Handle exceptions as necessary
} catch (FileNotFoundException fnfe) {
// Handle exceptions as necessary
} catch (Exception e) {
// Handle exceptions as necessary
}
Tôi chỉ muốn lưu ý rằng một số trang web sẽ không thực sự trả về mã trạng thái 404 mà chuyển hướng đến trang lỗi tùy chỉnh (và trả về 200 thành công). Đây là hành vi xấu, nhưng nó là giá trị đảm bảo rằng các trang web bạn đang thử nghiệm chống lại không phải là phục vụ lên những "mềm" 404. – Kris
1) Bạn có thể muốn bắt 'UnknownHostException' và' FileNotFoundException' trên phương thức 'openConnection()' (cả hai chỉ là 'IOException'). 2) Bạn cũng muốn bỏ 'URLConnection' xuống' HttpURLConnection' để có thể gọi phương thức 'getResponseCode()'. Và @ Kris: chuyển hướng sẽ dẫn đến 301 hoặc 302 mà bạn cần xử lý theo bất kỳ cách nào. Ví dụ: URL có thể đã được cập nhật. – BalusC
Ngoài ra nếu tệp khá lớn, bạn sẽ tải xuống toàn bộ nội dung để kiểm tra sự tồn tại. Nếu bạn đưa ra yêu cầu HEAD thay vì GET, bạn sẽ nhận được số dặm tốt hơn. –