今天在做跟另一个系统的同步用户接口时,接口使用base64转换完之后的字符串加入到url中,总是报java.net.MalformedURLException:Illegalcharacter in URL.
用转义字符转换了也不行。
后来发现是引用的base64jar包的问题。
应该引用
“
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
”
加密方法:
String url = "/shopping/confirm.action?id=1&name=itzhai"; String code = Base64.encode(url.getBytes());
而我开始使用的方法是:
import sun.misc.BASE64Encoder;
BASE64Encoder().encode(url.getBytes());
后来了解到:
1.sun.misc包是Sun公司提供给内部使用的专用API,在java API文档中我们看不到任何有关BASE64影子,不建议使用。
2.Apache还提供了,非标准的实现方式:
1.不再添加回车符。 2.Url Base64,也就是将“+”和“\”换成了“-”和“_”符号,且不适用补位。