2012-04-17 4 views
37

Esiste una sorta di URLEncode in Groovy?Come codificare l'URL in Groovy?

Non riesco a trovare alcuna utilità di codifica String → Stringa URL.

Esempio: dehydrogenase (NADP+)dehydrogenase%20(NADP%2b)

(+ invece di %20 sarebbe anche accettabile, some implementazioni farlo)

risposta

71

Si potrebbe utilizzare java.net.URLEncoder.

Nel tuo esempio sopra, le parentesi devono essere codificati anche:

def toEncode = "dehydrogenase (NADP+)" 
assert java.net.URLEncoder.encode(toEncode, "UTF-8") == "dehydrogenase+%28NADP%2B%29" 

Si potrebbe anche aggiungere un metodo per metaclasse di stringa:

String.metaClass.encodeURL = { 
    java.net.URLEncoder.encode(delegate, "UTF-8") 
} 

E semplice chiamata encodeURL() su qualsiasi stringa:

def toEncode = "dehydrogenase (NADP+)" 
assert toEncode.encodeURL() == "dehydrogenase+%28NADP%2B%29" 
+45

'URLEncoder.encode (toEncode)' è obsoleto. La codifica predefinita che usa non è raccomandata da RFC 3986. È meglio usare 'URLEncoder.encode (toEncode," UTF-8 ")' – jkschneider

+1

È una seccatura che questa funzione non faccia già parte della classe URL GDK. – ChrLipp