一直使用下面的方式解析url里的參數(shù)和值旁涤。
最近發(fā)現(xiàn)如果url中含有base64的參數(shù)值(可能包含=)就可能導(dǎo)致參數(shù)值只取到一部分粱檀。
所以急需修改完善程序洲敢。
-------------------------------------------------------------------------------------
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]);
}
-------------------------------------------------------------------------------------
之前考慮對余下的數(shù)組元素遍歷拼接,后來發(fā)現(xiàn)這個方式不好(總會需要自己添加=并去掉最后一個=)茄蚯。
此處就想到了 join方法压彭,于是想到將數(shù)組的第一個元素shift掉或者 remove掉,然后用=來join余下的數(shù)組元素渗常。比如:
param_array.shift();
ParamMap.put(param_array[0], StringUtils.join(param_array,"="));
但是java里面沒有找到這樣刪除數(shù)組元素的辦法壮不。下面的由于包以來不方便用,
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,"="));
}