遇到一个客户 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。