java中URLEncoder.encode与URLDecoder.decode处理url特殊参数

在做Http get请求传参时,因为参数的值被加密了,得到的是Base64的编码字符串,例如:

za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==

显然,里面包含了/ + = 特殊字符,如果直接通过url来传递该参数,那么在服务端获取的param会变成类似于下面的值:

za4T8MHB/6mhmYgXB7IntyyOUL7Cl 0jv5rFxAIFVji8GDrcf k8g== 

我们看到 三个 + 号消失了。

其原因就是:如果url参数值含有特殊字符时,需要使用 url 编码。 

 url = xxxxx?param = URLEncoder.encode("za4T8MHB/6mhmYgXB7IntyyOUL7Cl++0jv5rFxAIFVji8GDrcf+k8g==", "utf-8");

 然后服务端获取时:

String param = URLDecoder.decode(param, "utf-8");

这样才能获取到正确的值。

注意:

URLEncoder 必须 仅仅 编码 参数 或者参数的值,不能编码整个 url,也不能一起对 param=value 进行编码。而是应该: param=URLEncode(value, "utf-8")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值