我正在使用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)这是一个错误吗?
答案 0 :(得分:0)
从版本0.7开始,其余插件使用HTTPBuilder版本,该版本对&符号进行编码(和解码)。
有一个JIRA Issue有关建议的解决方法(将HTTPBuilder升级到> = 0.5.2)