1:代碼 @Value("${sms.username}") 可以將sms.properties配置文件中的值注入到username
1 //這種方式是將sms.properties里的值注入到屬性中 2 @Value("${sms.username}") 3 private String username; 4 5 @Value("${sms.password}") 6 private String password; 7 8 @Value("${sms.apiKey}") 9 private String apiKey; 10 11 @Value("${sms.url}") 12 private String url; 13 14 @Override 15 public void sendVerifyCode(String phoneNumber) { 16 17 // 首先的到session中VerifyCodeVo 18 VerifyCodeVO vc = UserContext.getVerifyCode(); 19 if (vc == null // 表示沒有發過驗證碼 如果已經發送了要判斷兩次發送之間的時間間隔 20 || (vc != null && DateUtil.getSecondsBetweenDates(vc.getSendTime(),new Date()) 21 >= BidConst.SEND_VERIFYCODE_INTERVAL)) { 22 // 生成一個驗證碼 23 String code = UUID.randomUUID().toString().substring(0, 4); 24 try { 25 // 創建一個URL對象 26 URL targetUrl = new URL(this.url); 27 // 從URL對象中獲得一個連接對象 28 HttpURLConnection conn = (HttpURLConnection) targetUrl.openConnection(); 29 // 設置請求方式 注意這里的POST或者GET必須大寫 30 conn.setRequestMethod("POST"); 31 // 設置POST請求是有請求體的 32 conn.setDoOutput(true); 33 // 拼接發送的短信內容 34 StringBuilder params = new StringBuilder(100) 35 .append("username=").append(username) 36 .append("&password=").append(password) 37 .append("&apikey=").append(apiKey).append("&mobile=") 38 .append(phoneNumber).append("&content=") 39 .append("您的驗證碼是:").append(code).append(",有效時間是:") 40 .append(BidConst.VERIFYCODE_VALID_TIME).append("秒!"); 41 // 寫入參數 42 conn.getOutputStream().write(params.toString().getBytes()); 43 // 讀入響應 44 String response = StreamUtils.copyToString( 45 conn.getInputStream(), Charset.forName("UTF-8")); 46 // 發送成功 以success開頭 47 if (response.startsWith("success")) { 48 // 構建一個vo對象 將vo放入session中 49 vc = new VerifyCodeVO(phoneNumber, code, new Date()); 50 UserContext.putVerifyCode(vc); 51 }else{ 52 throw new RuntimeException(); 53 } 54 // 構建一個vo對象 將vo放入session中 55 // vc = new VerifyCodeVO(phoneNumber, code, new Date()); 56 // UserContext.putVerifyCode(vc); 57 System.out.println("手機號" +phoneNumber +"驗證碼:" + code ); 58 } catch (Exception e) { 59 e.printStackTrace(); 60 throw new RuntimeException("發送短信失敗"); 61 } 62 } else { 63 throw new RuntimeException("發送過於頻繁"); 64 } 65 }
2:sms.properties配置文件
1 sms.username=admin 2 sms.password=admin 3 sms.url=http://172.16.71.27:8082/send.do 4 sms.apiKey=admin
3:調用的其它項目中Controller層中的 send.do 方法實現
1 @RequestMapping("/send") 2 @ResponseBody 3 public String send(String username, String password, String apikey, String mobile, String content) { 4 System.out.println("發送短信給手機:" + mobile + ",發送短信內容為:" + content); 5 return "success";
6 }