Решение
Хорошо, после небольшого поиска я нашел 1 решение для 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. По крайней мере, пока на этом этапе. Я только хочу проверить схему.