Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免递归url解码_Java_Urlencode_Urldecode - Fatal编程技术网

Java 如何避免递归url解码

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 =

我正在编写一个类似于图像代理的东西,从我的站点前端接收URL,我下载图像,重新调整它们的大小,然后返回较小的图像,供前端和客户端从“代理”下载。 这意味着我需要处理各种url模式,这就是为什么我选择对给定url进行解码,然后使用URIUtils.decode对其进行编码:

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组件的,对吗?如果一个空格编码为“+”,那么“不太正式”的编码呢?我想您需要检查%或+。(取决于您是否严格编码)