Java 如何避免递归url解码
我正在编写一个类似于图像代理的东西,从我的站点前端接收URL,我下载图像,重新调整它们的大小,然后返回较小的图像,供前端和客户端从“代理”下载。 这意味着我需要处理各种url模式,这就是为什么我选择对给定url进行解码,然后使用URIUtils.decode对其进行编码:Java 如何避免递归url解码,java,urlencode,urldecode,Java,Urlencode,Urldecode,我正在编写一个类似于图像代理的东西,从我的站点前端接收URL,我下载图像,重新调整它们的大小,然后返回较小的图像,供前端和客户端从“代理”下载。 这意味着我需要处理各种url模式,这就是为什么我选择对给定url进行解码,然后使用URIUtils.decode对其进行编码: private String fixUrl(String fromUrl) throws URIException { fromUrl = URIUtil.decode(fromUrl); fromUrl =
private String fixUrl(String fromUrl) throws URIException {
fromUrl = URIUtil.decode(fromUrl);
fromUrl = URIUtil.encodeQuery(fromUrl);
return fromUrl;
}
这将帮助我处理已经编码的URL。
我的问题是有些url是双重编码的,从我看到的情况来看,URIUtils.decode执行递归解码,这意味着在双重编码的url的情况下,我将得到一个不工作的坏url
有没有一种简单的方法只解码一次?我会尝试检查URL是否仍然包含字符
%
。如果它不包含任何%
,则不会对其进行编码,您可以停止解码过程 这是关于ApacheHTTP组件的,对吗?如果一个空格编码为“+”,那么“不太正式”的编码呢?我想您需要检查%或+。(取决于您是否严格编码)