Решение
Хорошо, я нашел одно решение на Stackoverflow после небольшого поиска, но я надеюсь сделать это без дополнительных библиотек. Как проверить допустимый URL-адрес на Java?
Моя проблема:
Сначала мы надеемся, что это не дубликат, но я не смог найти правильный ответ (сразу). Я хотел бы подтвердить, что URI (http) действителен в Java. Я придумал следующие тесты, но я не могу заставить их пройти. Сначала я использовал getPort()
, но затем http://www.google.nl
вернет -1 на getPort()
. Это тест, который я хочу пройти
Тест:
@Test
public void testURI_Isvalid() throws Exception {
assertFalse(HttpUtils.validateHTTP_URI("ttp://localhost:8080"));
assertFalse(HttpUtils.validateHTTP_URI("ftp://localhost:8080"));
assertFalse(HttpUtils.validateHTTP_URI("http://localhost:8a80"));
assertTrue(HttpUtils.validateHTTP_URI("http://localhost:8080"));
final String justWrong =
"/schedule/get?uri=http://localhost:8080&time=1000000";
assertFalse(HttpUtils.validateHTTP_URI(justWrong));
assertTrue(HttpUtils.validateHTTP_URI("http://www.google.nl"));
}
Это то, что я придумал после того, как я удалил часть getPort()
, но это не передает все мои модульные тесты.
Производственный код:
public static boolean validateHTTP_URI(String uri) {
final URI u;
try {
u = URI.create(uri);
} catch (Exception e1) {
return false;
}
return "http".equals(u.getScheme());
}
Это первый тест, который терпит неудачу, потому что я больше не проверяю часть getPort(). Надеюсь, кто-то может мне помочь. Я думаю, что я не использую правильный класс для проверки URL-адресов?
P.S:
Я не хочу подключаться к серверу для проверки правильности URI. По крайней мере, еще не на этом этапе. Я хочу только проверить схему.