url中含有base64的值如何正确解析出参数和值?

一直使用下面的方式解析url里的参数和值。

最近发现如果url中含有base64的参数值(可能包含=)就可能导致参数值只取到一部分。

所以急需修改完善程序。

-------------------------------------------------------------------------------------

old fetch param ::

for (String param_i : allparamstr_array) {

param_array = param_i.split("[=]");

if (param_array.length > 1)

ParamMap.put(param_array[0], param_array[1]);

}

-------------------------------------------------------------------------------------

之前考虑对余下的数组元素遍历拼接,后来发现这个方式不好(总会需要自己添加=并去掉最后一个=)。

此处就想到了 join方法,于是想到将数组的第一个元素shift掉或者 remove掉,然后用=来join余下的数组元素。比如:

param_array.shift();

ParamMap.put(param_array[0], StringUtils.join(param_array,"="));

但是java里面没有找到这样删除数组元素的办法。下面的由于包以来不方便用,

int[] intArray = {1,2,3,4,5};

int[] removed = ArrayUtils.removeElement(intArray,3);//create a new array

System.out.println(Arrays.toString(removed));

最后想到StringUtils所在的包里有ArrayUtils但是没有上面的方法,但是可以用StringUtils的substringAfter()方法。

于是写出来代码立马简单多了!

-------------------------------------------------------------------------------------

new fetch param :

import org.apache.commons.lang.*;

for (String param_i : allparamstr_array) {

param_array = param_i.split("[=]");

if (param_array.length == 2)

ParamMap.put(param_array[0], param_array[1]);

if (param_array.length > 2)

ParamMap.put(param_array[0], StringUtils.substringAfter(param_i,"="));

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容