记一则因编码造成的接口对接问题

某高校的短信接口对接,本地测试一切正常,部署到服务器却不正常,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");

发表评论

(必填)

(必填)

(以便回访)