对接短信遇到的编码问题

由于客户需要,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;
    }


对接极光短信可以使用Java SDK提供的API来实现。以下是一个简单的示例代码,演示了如何使用Java SDK发送短信: ```java import cn.jiguang.common.resp.APIConnectionException; import cn.jiguang.common.resp.APIRequestException; import cn.jiguang.common.resp.ResponseWrapper; import cn.jiguang.common.utils.Base64; import cn.jiguang.common.utils.StringUtils; import cn.jiguang.common.utils.Preconditions; import cn.jiguang.common.utils.RandomGenerator; import cn.jiguang.common.utils.TimeUtils; import cn.jiguang.common.utils.URIUtil; import cn.jiguang.common.utils.VersionUtils; import cn.jiguang.service.JSMSClient; import cn.jiguang.service.JSMSClientBuilder; import cn.jiguang.service.model.SMSConfig; import cn.jiguang.service.model.SMSResult; import cn.jiguang.service.model.SMSVerifyCodeParams; import cn.jiguang.service.model.SMSVerifyCodeResult; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; public class JPushSMSExample { // 极光短信的AppKey和MasterSecret private static final String APP_KEY = "your_app_key"; private static final String MASTER_SECRET = "your_master_secret"; public static void main(String[] args) { // 创建JSMSClient实例 JSMSClient client = new JSMSClientBuilder() .setAppKey(APP_KEY) .setMasterSecret(MASTER_SECRET) .build(); // 设置短信配置 SMSConfig config = new SMSConfig(); config.setSignId(1L); // 签名ID config.setTempId(1L); // 模板ID // 设置短信参数 Map<String, String> params = new HashMap<>(); params.put("code", "123456"); // 模板中的参数 // 发送短信 try { SMSResult result = client.sendSMS("手机号码", config, params); System.out.println("发送短信成功,短信ID:" + result.getSmsId()); } catch (APIConnectionException e) { System.err.println("连接异常:" + e.getMessage()); } catch (APIRequestException e) { System.err.println("请求异常:" + e.getMessage()); } } } ``` 请注意,以上代码中的`your_app_key`和`your_master_secret`需要替换为你自己的极光短信的AppKey和MasterSecret。另外,还需要替换`手机号码`为实际的手机号码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值