对接短信遇到的编码问题

来源:互联网 发布:java中级面试题及答案 编辑:程序博客网 时间:2024/05/09 04:32

由于客户需要,app添加短信功能,这里用到了第三方对接接口功能:

遇到一个问题,同一个方法本地测试 main方法可以执行

结果成功<?xml version="1.0" encoding="utf-8" ?><returnsms>
 <returnstatus>Success/returnstatus>
手机可以收到短信!

,但是在serviceImpl具体方法中调用就总是失败的报文

<?xml version="1.0" encoding="utf-8" ?><returnsms>
 <returnstatus>Faild</returnstatus>
 <message>短信必须带【】格式签名</message>
 <remainpoint>0</remainpoint>
 <taskID>0</taskID>
 <successCounts>0</successCounts></returnsms>

而且咨询短信平台客服,事实证明我们所测试短信都应该是已经发送成功了!

后台找同事帮忙看 发现是编码的问题:

main---方法 走的是eclipse 我当然设置的是UTF-8的编码,符合平台需求!!

serviceImpl需要tomcat协助,而tomcat默认的编码是:ISO-8859-1


 public static String sendMsgNew(String vCode, String phone) {
        OutputStream out = null;
        BufferedReader rd = null;
        String responseContent = "";
        HttpURLConnection urlConn = null;
        // 短信接口用户名和密码
        String userid = "40";
        String userName = "ayrjqr";
        String password = "123456";
        String extno = "060099";

        try {
            String _url = "http://120.76.25.160:7788/sms.aspx";
            String params = "action=send&userid=" + userid + "&account=" + userName + "&password=" + password
                    + "&mobile=" + phone + "&content="
                    + URLEncoder.encode("【爱睿机器人】您的验证码为:" + vCode + ",1分钟之内有效,请尽快验证!", "UTF-8")+ "&sendTime=&extno="
                    + extno;

            responseContent = SmsUtil.getResponse(_url, params);

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (urlConn != null) {
                    urlConn.disconnect();
                }
                if (rd != null) {
                    rd.close();
                }

                if (out != null) {
                    out.close();
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return responseContent;
    }


0 0
原创粉丝点击