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