Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to encode URL in Groovy?

Is there a kind of URLEncode in Groovy?

I can't find any String → String URL encoding utility.

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

(+ instead of %20 would also be acceptable, as some implementations do that)

like image 214
Nicolas Raoul Avatar asked Apr 17 '12 07:04

Nicolas Raoul


People also ask

How do I encode a URL?

Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format. URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign or with %20.

What is URL Encoder in java?

Simply put, URL encoding translates special characters from the URL to a representation that adheres to the spec and can be correctly understood and interpreted.

How can I tell if a URL is encoded?

So you can test if the string contains a colon, if not, urldecode it, and if that string contains a colon, the original string was url encoded, if not, check if the strings are different and if so, urldecode again and if not, it is not a valid URI.


1 Answers

You could use java.net.URLEncoder.

In your example above, the brackets must be encoded too:

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

You could also add a method to string's metaclass:

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

And simple call encodeURL() on any string:

def toEncode = "dehydrogenase (NADP+)" assert toEncode.encodeURL() == "dehydrogenase+%28NADP%2B%29"   
like image 158
aiolos Avatar answered Sep 28 '22 22:09

aiolos