使用springboot集成騰訊雲短信服務,解決配置文件讀取亂碼問題

springboot集成騰訊雲短信服務:android

(1)導入依賴git

<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)將服務碼等信息提取到全局配置文件github

#短信應用 SDK AppID tx.sms.appid=************* #短信應用 SDK AppKey tx.sms.appkey=*********** #簽名參數使用的是`簽名內容` tx.sms.smsSign=草莓樹下的思考公衆號 #短信模板 ID,須要在短信應用中申請 tx.sms.templateId=*********

(3)提取工具類web

@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)測試spring

@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); } }

結果截圖:json

能夠看到:短信內容中有一段信息是亂碼的springboot

緣由分析:app

  是因爲在application.properties配置文件中讀取 tx.sms.smsSign信息時,因爲屬性值是漢字,編碼格式不一致,致使的spring-boot

解決方案:工具

方式一:將  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");

最終結果截圖:

謝謝支持!!!

相關文章
相關標籤/搜索