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");
最終結果截圖:
謝謝支持!!!