java URL 编码解码

球音男孩 2014-09-17 09:38:21
我写了两个接口 一个是对字符串加密 的,一个是解密的 。加密的可以通过调用接口生成加密字符串如下:
Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3chlqMHBoxLQ/WUcbKwsamjy+N2RsBDwFnFegg1tQXmuvWUcuxIMKwMC8RCjWjgVVCH385LBiXkGLM+q9hhlfEMjavM0vHfvx02/Af+njixF7M2yuVmf6lhH2BnQ2j4sR12HvfRHbDnzKQbhrydNh7k90qB43B
可是解密的时候 在MAIN方法测试可以解密,但是通过URL调用接口的时候就出错了 ,听说是url编码问题 不太了解,如下是解密的接口:
	/**
* 对密钥解密
* @param enStr
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value="/deCryptKey/{enStr}",method=RequestMethod.GET)
public String deCryptKey(@PathVariable("enStr") String enStr) throws Exception{
//enStr = new String(enStr.getBytes("iso-8859-1"),"utf-8");
//enStr = java.net.URLDecoder.decode(enStr,"utf-8");
String deStr = KmService.deCryptKey(enStr);
return deStr;
}
...全文
337 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
球音男孩 2014-09-17
  • 打赏
  • 举报
回复
现在的问题是 传入URL参数 就进不去 接口这个方法
球音男孩 2014-09-17
  • 打赏
  • 举报
回复
引用 7 楼 huasuoworld 的回复:
404错误和解码错误不是一回事吧,后台有异常抛出吗?
没有,知识单纯的404
huasuoworld 2014-09-17
  • 打赏
  • 举报
回复
404错误和解码错误不是一回事吧,后台有异常抛出吗?
球音男孩 2014-09-17
  • 打赏
  • 举报
回复
引用 5 楼 huasuoworld 的回复:
把已经加密的字符串再编码一次,获取到后再解码

//step1
String code= "Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3chlqMHBoxLQ/WUcbKwsamjy+N2RsBDwFnFegg1tQXmuvWUcuxIMKwMC8RCjWjgVVCH385LBiXkGLM+q9hhlfEMjavM0vHfvx02/Af+njixF7M2yuVmf6lhH2BnQ2j4sR12HvfRHbDnzKQbhrydNh7k90qB43B
"
//编码
String urlEnCode = URLEncoder.encode(code,"UTF-8");

//step2
//解码
String urlDeCode = URLDecoder.decode(urlEnCode,"UTF-8");
//再解码
String deStr = KmService.deCryptKey(enStr); 
我在main方法中把 加密后的字符串 按照您说的 编码了一次 String urlEnCode = URLEncoder.encode(code,"UTF-8"); 然后把 编码后的字符串做为参数传到URL中 并在解密之前 解码了一次 String urlDeCode = URLDecoder.decode(urlEnCode,"UTF-8"); 然后才调用了 String deStr = KmService.deCryptKey(enStr); 最后还是 404错误
huasuoworld 2014-09-17
  • 打赏
  • 举报
回复
把已经加密的字符串再编码一次,获取到后再解码

//step1
String code= "Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3chlqMHBoxLQ/WUcbKwsamjy+N2RsBDwFnFegg1tQXmuvWUcuxIMKwMC8RCjWjgVVCH385LBiXkGLM+q9hhlfEMjavM0vHfvx02/Af+njixF7M2yuVmf6lhH2BnQ2j4sR12HvfRHbDnzKQbhrydNh7k90qB43B
"
//编码
String urlEnCode = URLEncoder.encode(code,"UTF-8");

//step2
//解码
String urlDeCode = URLDecoder.decode(urlEnCode,"UTF-8");
//再解码
String deStr = KmService.deCryptKey(enStr); 
球音男孩 2014-09-17
  • 打赏
  • 举报
回复
引用 2 楼 weinianjie1 的回复:
没猜错的话,你应该是 加密:字符串->url传输->加密后的字符串 解密:解密后的字符串->url传输->字符串 很明显在url编码的时候出了问题,用spring框架么,问题是比较多的,别特是其内部写死了编码方式,so你需要两部操作 server.xml添加

 <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
web.xml添加

	<filter>
		<filter-name>EncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>  
		<filter-name>EncodingFilter</filter-name>  
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>EncodingFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
你说的我都看了,并且在项目中找到了你说的这两个配置,因为项目框架是搭好的。
球音男孩 2014-09-17
  • 打赏
  • 举报
回复
引用 1 楼 huasuoworld 的回复:
你可以尝试用URLEncoder再加密一次。
再加密?能否详细点
weinianjie1 2014-09-17
  • 打赏
  • 举报
回复
没猜错的话,你应该是 加密:字符串->url传输->加密后的字符串 解密:解密后的字符串->url传输->字符串 很明显在url编码的时候出了问题,用spring框架么,问题是比较多的,别特是其内部写死了编码方式,so你需要两部操作 server.xml添加

 <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
web.xml添加

	<filter>
		<filter-name>EncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>  
		<filter-name>EncodingFilter</filter-name>  
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>EncodingFilter</filter-name>
		<url-pattern>*.jsp</url-pattern>
	</filter-mapping>
huasuoworld 2014-09-17
  • 打赏
  • 举报
回复
你可以尝试用URLEncoder再加密一次。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧