2016-07-25 9 views
0

Ich arbeite an einer Anwendung, in der wir URLs validieren müssen, überprüfen, ob es mit http (wenn nicht, http 'vorangestellt) und schließlich codieren sie. Mein Problem ist, dass URLs, die wir erhalten, alle Arten von Dingen enthalten können - ungültig/gültig, aber nicht beginnend mit http/bereits codiert/gültig, aber Leerzeichen oder Unicode-Zeichen enthalten. Derzeit verwende ich die URLValidator-Klasse, validiert jedoch keine Leerzeichen oder Unicode-Zeichen. Im Anschluss ist mein Code:Validieren und codieren Sie URLs mit Unicode-Zeichen in Java

if (url != null && !url.trim().isEmpty()) { 
url = URLDecoder.decode(url, "UTF-8"); 
if (!url.matches("^(https?)://.*$")) { 
    url = "http" + url; 
} 
UrlValidator validator = new UrlValidator(); 
if (url.contains("(")) { 
    if (validator.isValid(url.substring(0, url.indexOf("(")))) { 
     return getEncodedSiteUrl(url); 
    } 
    return null; 
} 
if (validator.isValid(url)) { 
    return getEncodedSiteUrl(url); 
} 
} 

Aber dieser Code filtert alle gültigen URLs, die einen Raum/Unicode-Zeichen enthalten. Ich denke nicht, dass ich URLValidator benutzen sollte, um alle Arten von URLs zu betrachten, die wir bekommen. Kann mir bitte jemand helfen? Vielen Dank.

Antwort

0

Überprüfen Sie this URL mit einer Methode, die Sie verwenden können.

public static boolean isURL(String url) 
{ 
    if (url == null) { 
    return false; 
} 
// Assigning the url format regular expression 
String urlPattern = "^http(s{0,1})://[a-zA-Z0-9_/\\-\\.]+\\.([A-Za-z/]{2,5})[a-zA-Z0-9_/\\&\\?\\=\\-\\.\\~\\%]*"; 
return url.matches(urlPattern); 
} 
+0

Danke für den Link. Aber es löst mein Problem nicht. Es validiert URLs nicht wie - "http://www.newsnow.co.uk/h/Sport/Football/Premier League/Transfer News" – pooja

+0

Sogar Stackoverflow erlaubt es nicht. Ich schätze aufgrund von Leerzeichen. :) – pooja

+0

URL mit Leerzeichen sollte codiert werden, bevor Sie sie verwenden. – lsiva