http 参数中传递特殊字符需要先编码

遇到一个客户bug:远程设计密码有特殊字符,没法登陆

调试发现,客户端设计器设置密码 "1+1",通过http请求发送到服务端时,内容变成了"1 1"。特殊字符丢失了。

跟老大描述了情况,老大轻描淡写一句话,“encode 一下就行了”。然后我就试了下,果然就行了。。。

贴上核心代码片段:

para.put("user", user);
password = URLEncoder.encode(password, "UTF-8");
para.put("password", password);
HttpClient client = createHttpMethod(para, true);

特殊字符必须编码后再发送。

正确流程是:客户端encode,发送数据,服务端decode