我写的东西像一个图像代理,我从我的网站前端接收网址,我下载图像,重新调整大小,并返回较小的图像前端和客户端下载从“代理”.这意味着我需要照顾各种各样的网址模式,这就是为什么我选择解码给定的网址,而不是编码它使用URIUtils.解码:
private String fixUrl(String fromUrl) throws URIException {
fromUrl = URIUtil.decode(fromUrl);
fromUrl = URIUtil.encodeQuery(fromUrl);
return fromUrl;
}
这应该可以帮助我处理已经编码的网址。我的问题是有些网址是双重编码的,从我所看到的,URIUtils.decode,执行递归解码,这意味着在双重编码的网址的情况下,我会得到一个不工作的坏网址。
有没有一种简单的方法只解码一次?
2条答案
按热度按时间pgvzfuti1#
我会尝试检查该网址仍然包含字符
%
。如果它不包含任何%
它是不编码的,你可以停止你的解码过程。yb3bgrhw2#
我知道的最简单的选择是使用内置的
以便只自动解码一次。
如果像我一样,你有情况下,有时URL的双重/三重编码-你可以使用这个递归函数,以解码一次又一次,直到没有“%”或“+”:
干杯