编码路径再次编码

Encoded path is encoded again

我有一个要求:

* url foo
* path bar
* path code

代码是从另一个请求中检索到的,我收到了 url 编码的代码。 问题是当我把它放在路径中时,空手道再次对其进行编码。

例如:我收到 zxc1J%2BV%2FMnb 并且在路径中它变成 zxc1J%252BV%252FMnb%2B%252B取代。

当我解码收到的代码并将其放入路径时,它没有被编码。

我要解码的 javascript 函数是: * def codeDecoded = decodeURIComponent(code)

编码函数为* def codeEncoded = encodeURIComponent(codeDecoded)

我错过了什么吗?怎么了?我该如何管理?谢谢。

编辑:

@Peter Thomas 我尝试了最后一次机会,因为我已经向服务器的某个人展示了 prb,他不明白为什么空手道再次编码 smth 已经编码而不编码 smth 已解码。

所以我的第一个请求是 POST 请求,其中 returns 是 responseHeaders 中的编码代码。例如:GVkX1%2FKZEi%2FWQ

在我的第二个请求中,我必须获取此代码并将其放在路径 ex: url/GVkX1%2FKZEi%2FWQ 中。 问题是空手道将其转换为 url/GVkX1%252FKZEi%252FWQ 。我不需要它。如果我在将其放入路径之前解码 url/GVkX1%2FKZEi%2FWQ,则空手道中的 url 是 url/GVkX1/KZEi/WQ。当放在路径中时,解码的代码没有用空手道编码。我希望它更容易理解。

是的,为了您的方便,空手道将始终对您提供的 path 进行编码。无论如何,这就是 99% 的用户所期望的。

使用自定义函数解码并确保将未编码的 URL / 路径值传递给空手道并没有错,所以无论如何,请继续这样做!

编辑:您尝试解码的方式很可能是错误的,试试这个:

* def encoded = 'zxc1J%2BV%2FMnb'
* def decoded = java.net.URLDecoder.decode(encoded, 'UTF-8')
* print decoded

打印:

[print] zxc1J+V/Mnb