某高校的短信接口对接,本地测试一切正常,部署到服务器却不正常,review代码发现含有如下代码:
public String getMD5(String str) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
return new BigInteger(1, md.digest()).toString(16);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
这个取md5的方法在含有中文时,因环境的编码问题会造成得到的MD5不一致,故需要将标红的部分更改为
md.update(str.getBytes("UTF-8")); 即传入编码所使用的字符集即可。 同时,这边另外一个短信接口,发送时要求使用POST提交,也同样遇到了编码问题,解决方法同样简单: 使用标红的部分对编码进行下强制指定,就好咯 :)
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");