Encode and parse URL query strings in Groovy
Groovy
import java.net.URLEncoder
import java.net.URLDecoder
String buildQuery(Map params) {
params.collect { k, v ->
"${URLEncoder.encode(k.toString(), 'UTF-8')}=${URLEncoder.encode(v.toString(), 'UTF-8')}"
}.join('&')
}
Map parseQuery(String query) {
query.split('&').findAll { it }.collectEntries { pair ->
def (k, v) = pair.split('=', 2)
[(URLDecoder.decode(k, 'UTF-8')): URLDecoder.decode(v ?: '', 'UTF-8')]
}
}
def query = buildQuery([q: 'groovy & java', page: 2])
println query
println parseQuery(query)