java URL 编码解码
我写了两个接口一个是对字符串加密的,一个是解密的。加密的可以通过调用接口生成加密字符串如下:
Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3chlqMHBoxLQ/WUcbKwsamjy+N2RsBDwFnFegg1tQXmuvWUcuxIMKwMC8RCjWjgVVCH385LBiXkGLM+q9hhlfEMjavM0vHfvx02/Af+njixF7M2yuVmf6lhH2BnQ2j4sR12HvfRHbDnzKQbhrydNh7k90qB43B
可是解密的时候在MAIN方法测试可以解密,但是通过URL调用接口的时候就出错了,听说是url编码问题不太了解,如下是解密的接口:/**
*对密钥解密
*@paramenStr
*@return
*@throwsException
*/
@ResponseBody
@RequestMapping(value="/deCryptKey/{enStr}",method=RequestMethod.GET)
publicStringdeCryptKey(@PathVariable("enStr")StringenStr)throwsException{
//enStr=newString(enStr.getBytes("iso-8859-1"),"utf-8");
//enStr=.URLDecoder.decode(enStr,"utf-8");
StringdeStr=KmService.deCryptKey(enStr);
returndeStr;
}
------解决思路----------------------
你可以尝试用URLEncoder再加密一次。
------解决思路----------------------
没猜错的话,你应该是
加密:字符串->url传输->加密后的字符串
解密:解密后的字符串->url传输->字符串
很明显在url编码的时候出了问题,用spring框架么,问题是比较多的,别特是其内部写死了编码方式,so你需要两部操作
server.xml添加
web.xml添加
EncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
EncodingFilter
*.action
EncodingFilter
*.jsp
------解决思路----------------------
把已经加密的字符串再编码一次,获取到后再解码
//step1
Stringcode="Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3chlqMHBoxLQ/WUcbKwsamjy+N2RsBDwFnFegg1tQXmuvWUcuxIMKwMC8RCjWjgVVCH385LBiXkGLM+q9hhlfEMjavM0vHfvx02/Af+njixF7M2yuVmf6lhH2BnQ2j4sR12HvfRHbDnzKQbhrydNh7k90qB43B
"
//编码
StringurlEnCode=URLEncoder.encode(code,"UTF-8");
//step2
//解码
StringurlDeCode=URLDecoder.decode(urlEnCode,"UTF-8");
//再解码
StringdeStr=KmService.deCryptKey(enStr);