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

java中URLEncoder.encode与URLDecoder.decode处理url特殊参数,第1张

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")

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存