2011-01-29 32 views
7

Ứng dụng của tôi truy cập thông tin trên web, trong quá trình phát triển của tôi làm cách nào để mô phỏng một trang web bị lỗi trong Java? Nếu url cho tôi trang mà ứng dụng của tôi xử lý, nhưng nếu trang web vì lý do nào đó tạm thời ngừng hoạt động hoặc thậm chí nếu trang web đang hoạt động, nhưng url trả về thông tin không hợp lệ hoặc có thể kết nối Internet bị vô hiệu hóa, làm cách nào để Ứng dụng Java phân biệt các tình huống đó? Và có thể biết điều gì đang xảy ra?Làm thế nào để mô phỏng một trang web trong Java?

Chỉnh sửa: Tôi đang cố viết ứng dụng Java của mình để khi gặp phải các truy cập url khác nhau, nó biết trường hợp nào đang xử lý và báo cho người dùng biết.

+0

Bạn có thể làm rõ câu hỏi của mình không? Bạn đang cố gắng _test_ hành vi ứng dụng của mình khi ứng dụng cố gắng và không truy cập được một trang web bên ngoài? Bạn đang cố gắng viết mã xử lý một số loại trường hợp lỗi khác nhau? –

Trả lời

0

Nếu trang web không hoạt động, mã sẽ là mã 404 và sẽ ném một số java.net.UnknownHostException. Bạn sẽ cần phải nắm bắt hoặc bắt được như IOException. Đối với các mã trạng thái khác, bạn có thể đọc chúng bằng đoạn mã sau. Bạn có thể xem danh sách HTTP status codes tại đây.

Bạn có thể đọc mã phản hồi theo cách này.

URL url = new URL ("http://someurl.doesnotexist.com"); 
    URLConnection connection = url.openConnection(); 
    connection.connect(); 
    HttpURLConnection httpConnection = (HttpURLConnection) connection; 
    int code = httpConnection.getResponseCode(); 
    //do something with the code 
+4

Nếu trang web bị tắt, điều này có nghĩa là máy chủ web không hoạt động. Nó không thể phản ứng rõ ràng với mã 404 nếu nó không chạy chút nào. – Progman

+0

Rõ ràng. Trong trường hợp đó, bạn sẽ nhận được một ngoại lệ. Đoạn mã trên chỉ là một đoạn mã ngắn ... chúng sẽ cần được bao quanh bởi try catch của IOException. 404 sẽ bị bắt trong ngoại lệ đó. Tôi sẽ chỉnh sửa câu trả lời của mình để làm rõ phần đó. Xin vui lòng loại bỏ các downvote nếu bạn nghĩ rằng câu trả lời là lên tp sự hài lòng của bạn sau khi upvote. – CoolBeans

+1

@Progman: Trang web không có nghĩa là máy chủ không hoạt động. –

0

Mã phản hồi HTTP là khóa chính. Lỗi máy chủ nội bộ (500) hoặc Không tìm thấy trang (404) để phân biệt các tình huống đó (có thể kết hợp với các mã trạng thái bổ sung).

Nếu bạn đang sử dụng mùa xuân, bạn có thể sử dụng Interceptor để tạo các phản hồi khác nhau vào những thời điểm khác nhau (để bạn có thể mô phỏng trang web đó không hoạt động). Một ví dụ tốt đẹp được cung cấp trong tài liệu. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor

0

Nếu bạn cần từ chối quyền truy cập vào địa chỉ Internet cụ thể, bạn có thể sử dụng ứng dụng tường lửa. Hoặc, thậm chí đơn giản hơn, nếu địa chỉ IP của máy chủ của bạn được giải quyết từ tên miền, bạn có thể trỏ tên miền đó đến địa chỉ loopback của bạn (127.0.0.1) bằng cách sử dụng tệp/etc/hosts (% SystemRoot% \ system32 \ drivers \ vv \ cho Windows).

+0

Tôi nghĩ đó là những gì OP đang yêu cầu ở đây. Nếu tôi hiểu nó một cách chính xác anh ta muốn tìm ra một cách để phát hiện nếu một trang web là xuống hoặc trả về một số hình thức lỗi máy chủ nội bộ đó là ngăn chặn nó xem. – CoolBeans

+0

Vâng, có thể. Tôi không chắc là đã trả lời câu hỏi tôi nhận được từ bài đăng. :) – aruseni

1

Phương thức connect() từ java.net.URLConnection class ném SocketTimeoutException nếu không thể kết nối với URL đã cho. Bạn có thể đặt thời gian chờ thông qua phương thức setConnectTimeout(int) và phản hồi trên trường hợp ngoại lệ SocketTimeoutException được ném trong trường hợp này.

1

Theo mục đích của thử nghiệm hoặc mô phỏng các điều kiện lỗi khác nhau, dưới đây là một vài gợi ý thêm:

  • Đảm bảo rằng tên miền của URL là unreachable (miền chuyển sang một địa chỉ IP, nhưng địa chỉ IP là không thể truy cập). Bạn có thể giả mạo điều này bằng cách thêm mục nhập trong tệp/etc/hosts của bạn (nếu có dạng tương tự)
  • Đảm bảo rằng miền của URL không thể giải quyết được, tức là địa chỉ tên miền giả không tồn tại
  • Rút phích cắm cáp mạng của khách hàng/không dây: điều gì xảy ra?
  • Rút cáp mạng của khách hàng trong khi đang chuyển: điều gì sẽ xảy ra?
  • Rút cáp mạng của máy chủ thử nghiệm của bạn ở giữa quá trình chuyển? Khách hàng nhìn thấy gì?
  • giết máy chủ web của máy chủ thử nghiệm trong khi đang chuyển giữa? Điều gì sẽ xảy ra với kết nối URL của khách hàng?
  • Tắt máy chủ web của máy chủ thử nghiệm và máy khách sẽ nhìn thấy gì khi cố gắng kết nối?

Khi bạn thử nghiệm các trường hợp khác nhau này, bạn sẽ ngạc nhiên khi biết điều gì xảy ra với khách hàng của mình. Nếu bạn may mắn, bạn sẽ nhận được ngoại lệ. Đôi khi khách hàng có thể treo mãi mãi. Nhưng đó là thế giới thực. Chúc may mắn.

+0

Rất vui được xem chi tiết này! Cảm ơn. – Frank

Các vấn đề liên quan