diff --git a/core-java-modules/core-java-networking-3/pom.xml b/core-java-modules/core-java-networking-3/pom.xml
index 91ae7ccc3f..4f373238ee 100644
--- a/core-java-modules/core-java-networking-3/pom.xml
+++ b/core-java-modules/core-java-networking-3/pom.xml
@@ -58,6 +58,12 @@
guava
${guava.version}
+
+
+ commons-validator
+ commons-validator
+ ${apache.commons-validator.version}
+
@@ -90,6 +96,7 @@
1.32
0.17
1.6.2
+ 1.7
\ No newline at end of file
diff --git a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/urlvalidation/UrlValidation.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/urlvalidation/UrlValidation.java
new file mode 100644
index 0000000000..b529448200
--- /dev/null
+++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/urlvalidation/UrlValidation.java
@@ -0,0 +1,36 @@
+package com.baeldung.urlvalidation;
+
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.apache.commons.validator.routines.UrlValidator;
+
+public class UrlValidation {
+ public boolean isValidURLJavaNet(String url) throws MalformedURLException, URISyntaxException {
+ try {
+ new URL(url).toURI();
+ return true;
+ } catch (MalformedURLException e) {
+ return false;
+ } catch (URISyntaxException e) {
+ return false;
+
+ }
+ }
+
+ public boolean invalidUrlAsValidJavaNet(String url) throws MalformedURLException {
+ try {
+ new URL(url);
+ return true;
+ } catch (MalformedURLException e) {
+ return false;
+ }
+ }
+
+ public boolean isValidURLApache(String url) throws MalformedURLException {
+ UrlValidator validator = new UrlValidator();
+ return validator.isValid(url);
+ }
+
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/urlvalidation/UrlValidateUnitTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/urlvalidation/UrlValidateUnitTest.java
new file mode 100644
index 0000000000..ef04216a9f
--- /dev/null
+++ b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/urlvalidation/UrlValidateUnitTest.java
@@ -0,0 +1,44 @@
+package com.baeldung.urlvalidation;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+
+import com.baeldung.urlvalidation.UrlValidation;
+
+public class UrlValidateUnitTest {
+
+ @Test
+ public void givenValidStringAsURL_whenUsingJDK_shouldReturnTrue() throws MalformedURLException, URISyntaxException {
+ UrlValidation urlValidator = new UrlValidation();
+ assertTrue(urlValidator.isValidURLJavaNet("http://baeldung.com/"));
+ }
+
+ @Test
+ public void givenInvalidStringAsURL_whenUsingJDK_shouldReturnFalse() throws MalformedURLException, URISyntaxException {
+ UrlValidation urlValidator = new UrlValidation();
+ assertFalse(urlValidator.isValidURLJavaNet("https://www.baeldung.com/ java-%%$^&& iuyi"));
+ }
+
+ @Test
+ public void givenInvalidStringAsURL_whenUsingJDK_shouldReturnTrue() throws MalformedURLException {
+ UrlValidation urlValidator = new UrlValidation();
+ assertTrue(urlValidator.invalidUrlAsValidJavaNet("https://www.baeldung.com/ java-%%$^&& iuyi"));
+ }
+
+ @Test
+ public void givenValidStringAsURL_whenUsingApache_shouldReturnTrue() throws MalformedURLException {
+ UrlValidation urlValidator = new UrlValidation();
+ assertTrue(urlValidator.isValidURLApache("http://baeldung.com/"));
+ }
+
+ @Test
+ public void givenInvalidStringAsURL_whenUsingApache_shouldReturnFalse() throws MalformedURLException {
+ UrlValidation urlValidator = new UrlValidation();
+ assertFalse(urlValidator.isValidURLApache("https://www.baeldung.com/ java-%%$^&& iuyi"));
+ }
+}
\ No newline at end of file