• 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题


    springboot集成腾讯云短信服务:

    (1)导入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
           <exclusion>
             <groupId>com.vaadin.external.google</groupId>
             <artifactId>android-json</artifactId>
           </exclusion>
            </exclusions>
    </dependency>
    <dependency>
        <groupId>com.github.qcloudsms</groupId>
        <artifactId>qcloudsms</artifactId>
        <version>1.0.6</version>
    </dependency>

    (2)将服务码等信息提取到全局配置文件

    #短信应用 SDK AppID
    tx.sms.appid=*************
    
    #短信应用 SDK AppKey
    tx.sms.appkey=***********
    
    #签名参数使用的是`签名内容`
    tx.sms.smsSign=草莓树下的思考公众号
    
    #短信模板 ID,需要在短信应用中申请
    tx.sms.templateId=*********

    (3)提取工具类

    @Component
    public class SmsUtil {
        
        @Value("${tx.sms.appid}")
        private Integer appid;
        
        @Value("${tx.sms.appkey}")
        private String appkey;
        
        @Value("${tx.sms.smsSign}")
        private String smsSign;
       
     
        @Value("${tx.sms.templateId}")
        private Integer templateId;
        
        public void txSmsSend(String phoneNumber,ArrayList<String> params) {
            //7. 封装短信应用码
            SmsSingleSender ssender = new SmsSingleSender(appid,appkey);
            //地区,电话,模板ID,验证码,签名
                try {
                    SmsSingleSenderResult result = ssender.sendWithParam(
                            "86", phoneNumber, templateId, params, smsSign, "", "");
                    //输出一下返回值
                    System.out.println(result);
                } catch (HTTPException | JSONException | IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }            
        }
    }

    (4)测试

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes=PhoneApp.class)
    public class Test {
        @Autowired
        private SmsUtil sms;
        
        @org.junit.Test
        public void test() {
            String phoneNumber = "17609584519";
            ArrayList<String> list = new ArrayList<>();
            list.add("赵丽颖");
            list.add("lyf");
            list.add("2019-08-13");
            
            sms.txSmsSend(phoneNumber, list);
        }
    }

    结果截图:

    可以看到:短信内容中有一段信息是乱码的

    原因分析:

      是由于在application.properties配置文件中读取 tx.sms.smsSign信息时,由于属性值是汉字,编码格式不一致,导致的

    解决方案:

    方式一:将  tx.sms.smsSign信息在程序中进行设置,如下:

    private String smsSign = "草莓树下的思考公众号";

    方式二:在application.properties中定义,但是在传参时要进行编码转换

    application.properties配置文件

    #签名参数使用的是`签名内容`
     tx.sms.smsSign=草莓树下的思考公众号

    工具类:

    @Value("${tx.sms.smsSign}") 
    private String smsSign;
    smsSign = new String(smsSign.getBytes("ISO8859-1"), "UTF-8");

    最终结果截图:

    谢谢支持!!!

  • 相关阅读:
    TI达芬奇平台测试
    V4L2 常用控制命令
    Linux 线程编程
    HMM
    PCA & ICA
    SVD分解(转载)
    Factor analysis
    Mixtures of Gaussians and the EM algorithm
    Arduino 单个按键控制led灯闪烁、常亮、关闭
    django计算当前日期最近一周日期范围
  • 原文地址:https://www.cnblogs.com/ncl-960301-success/p/11354366.html
Copyright © 2020-2023  润新知