Как смоделировать сайт на Java? - PullRequest
7 голосов
/ 29 января 2011

Мое приложение обращается к информации в Интернете, во время разработки, как мне симулировать, что сайт не работает в Java?Если URL-адрес возвращает меня на страницу, мое приложение обрабатывает его, но если сайт по какой-то причине временно недоступен или даже если сайт работает, но URL-адрес возвращает недействительную информацию или может быть отключено подключение к Интернету, как это сделать?Java-приложение различает эти ситуации?И быть в состоянии определить, что происходит?

Редактировать: Я пытаюсь написать свое Java-приложение, чтобы, когда оно сталкивается с различными URL-адресами, оно знало, с каким оно имеет дело, и сообщать пользователю соответственно.

Ответы [ 5 ]

1 голос
/ 29 января 2011

В целях тестирования или моделирования различных условий ошибки вот несколько дополнительных предложений:

  • Убедитесь, что домен URL недоступен (домен преобразуется в IP-адрес, но IP-адрес являетсяне доступен).Вы можете подделать это, добавив запись в свой файл / etc / hosts (если она похожа на unix)
  • Убедитесь, что домен URL не разрешен, то есть поддельный адрес домена, который не существует
  • Отключите сетевой кабель / беспроводную сеть вашего клиента: что происходит?
  • Отключите сетевой кабель вашего клиента во время передачи: что происходит?
  • Отключите сетевой кабель тестового сервера в серединеперечислить?Что видит клиент?
  • убивает веб-сервер тестового сервера в процессе передачи?Что происходит с URL-соединением клиента?
  • Завершение работы веб-сервера тестового сервера и что видит клиент, когда пытается подключиться?

При тестировании этих различных сценариев вы будетеудивлен узнать, что происходит с вашим клиентом.Если вам повезет, вы получите исключения.Иногда клиент может зависнуть навсегда.Но это реальный мир.Удачи.

1 голос
/ 29 января 2011

Метод connect() из класса java.net.URLConnection выдает SocketTimeoutException, если не удается подключиться к указанному URL-адресу. Вы можете установить таймаут с помощью метода setConnectTimeout(int) и реагировать на исключение SocketTimeoutException, которое выдается в этом случае.

0 голосов
/ 29 января 2011

Коды ответов HTTP являются ключевыми. Внутренняя ошибка сервера (500) или страница не найдена (404) могут использоваться для различения этих ситуаций (возможно, в сочетании с дополнительными кодами состояния).

Если вы используете Spring, вы можете использовать Interceptor, чтобы генерировать разные ответы в разное время (чтобы вы могли смоделировать, что сайт не работает). Хороший пример приведен в документации. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor

0 голосов
/ 29 января 2011

Если вам нужно запретить доступ к определенному Интернет-адресу, вы можете использовать приложение брандмауэра.Или, что еще проще, если IP-адрес вашего сервера разрешен из доменного имени, вы можете указать это доменное имя на свой адрес обратной связи (127.0.0.1) с помощью файла / etc / hosts (% SystemRoot% \ system32 \ drivers \и т. д. для Windows).

0 голосов
/ 29 января 2011

Если сайт не работает, он получит код 404 и выдаст java.net.UnknownHostException .Вам нужно будет поймать его или поймать как IOException .Для других кодов состояния вы можете прочитать их, используя следующий фрагмент кода.Вы можете увидеть список кодов состояния HTTP здесь.

Вы можете прочитать код ответа следующим образом.

   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
...