Grails休息插件不编码&符号

时间:2013-07-16 20:29:33

标签: rest grails

我正在使用Grails rest plugin,并且遇到包含&符号的参数问题。以下是我的查询示例:

def query = [
    method: 'artist.getinfo',
    artist: 'Matt & Kim',
    format: 'json'
]

withRest(uri:'http://ws.audioscrobbler.com/') {
    def resp = get(path: '/2.0/', query: query)
}

我认为get方法应该自动对查询中的参数进行URL编码 - 它正确地将空格转换为'+'。但是,它会保留&符号,这是不正确的(它应编码为%26)。

我在调用get之前尝试手动编码艺术家名称,但是其余的插件会对百分号进行编码!

我打开了其他客户端的日志记录,因此我可以看到它正在请求的URL。 最初:http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Matt+&+Kim&format=json

如果我手动编码名称:http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=Matt+%2526+Kim&format=json

我需要设置编码类型吗? (last.fm API指定UTF-8)这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

从版本0.7开始,其余插件使用HTTPBuilder版本,该版本对&符号进行编码(和解码)。

有一个JIRA Issue有关建议的解决方法(将HTTPBuilder升级到> = 0.5.2)