SpringBoot項(xiàng)目實(shí)現(xiàn)短信發(fā)送接口開發(fā)的實(shí)踐
一. 短信接口實(shí)現(xiàn)
描述:請(qǐng)求第三方短信接口平臺(tái)(而第三方短信平臺(tái)的接口請(qǐng)求是webservice方式實(shí)現(xiàn)的),此時(shí)我們要測試接口是否通,要用的工具SoapUI測試工具, 不能用PostMan,即使用post組裝完參數(shù)請(qǐng)求該短信平臺(tái)接口也不會(huì)通的(請(qǐng)求之前要ping通IP,只有在同一網(wǎng)段才可請(qǐng)求.或者使用VPN遠(yuǎn)程連接也可請(qǐng)求),接口通了之后.開始裸代碼.代碼使用IDEA工具去完成 , 實(shí)現(xiàn)邏輯根據(jù)需求而定.
首先導(dǎo)入兩個(gè)依賴
<!--生成短信代碼webservice START--> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.2</version> </dependency>
webservice方式實(shí)現(xiàn)(IDEA)
①創(chuàng)建一個(gè)新的包,鼠標(biāo)點(diǎn)擊此包
②找到generate點(diǎn)擊
③會(huì)出現(xiàn)以下界面,這里要注意 WSDL URL 地址要改為(短信平臺(tái)請(qǐng)求接口地址,后邊要加問號(hào)和wsdl ) 并也要更改Apache Axis 為 Glassfish /JAX-WS
④更改后出現(xiàn)此界面,點(diǎn)擊OK后 , 會(huì)在新創(chuàng)建的包下出現(xiàn)idea自動(dòng)創(chuàng)建的文件 .
⑤此時(shí) 把.class文件刪除就好了,留下此三個(gè)文件(注意:SMSNewAllService類可以理解為打通webservice接口的實(shí)現(xiàn)類)
⑥業(yè)務(wù)實(shí)現(xiàn)及調(diào)用
package com.enn.claim.config.sms; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * 獲取配置文件中: 發(fā)送短信平臺(tái)地址/賬號(hào)/密碼/短信類型/費(fèi)用部門等 參數(shù) */ @Component @ConfigurationProperties(prefix = "send-messages") public class SmsProperties { private String address; private String userName; private String passWord; private String smsType; private String feeDept; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return passWord; } public void setPassword(String password) { this.passWord = password; } public String getSmsType() { return smsType; } public void setSmsType(String smsType) { this.smsType = smsType; } public String getFeeDept() { return feeDept; } public void setFeeDept(String feeDept) { this.feeDept = feeDept; } @Override public String toString() { return "SmsProperties{" + "address='" + address + '\'' + ", userName='" + userName + '\'' + ", passWord='" + passWord + '\'' + ", smsType='" + smsType + '\'' + ", feeDept='" + feeDept + '\'' + '}'; } }
/** * 發(fā)送短信 * @param sendMessageVo * @return */ @Override public SendSmsResult sendMessage(SendSmsVo sendMessageVo) { // 0.參數(shù)校驗(yàn) sendMessageVo = this.validParams(sendMessageVo); // 1.創(chuàng)建返回結(jié)果集 SendSmsResult smsResult = new SendSmsResult(); try { //2.拼裝發(fā)送手機(jī)號(hào)碼 String mobiles = ""; for (int i = 0; i < sendMessageVo.getMobile().size(); i++) { if (i == 0) { mobiles = sendMessageVo.getMobile().get(i); } else { mobiles = mobiles + "," + sendMessageVo.getMobile().get(i); } } //3.發(fā)送短信 log.info("開始請(qǐng)求發(fā)送短信>>>>>>>>>>>>>>>>>>"+"開始發(fā)送短信"); SMSNewAllService service = new SMSNewAllService(); ISMSNewAll ismsNewAll = service.getISMSNewAllPort(); String resultSend = ismsNewAll.sendSMSWithExt(smsProperties.getUserName(), smsProperties.getPassword(), mobiles, sendMessageVo.getSmsBody(), smsProperties.getSmsType(), sendMessageVo.getReplyFlag(), smsProperties.getFeeDept(), sendMessageVo.getAllowStartTime(), sendMessageVo.getAllowEndTime(), sendMessageVo.getDeadLineTime(), sendMessageVo.getAppointTime(), sendMessageVo.getArea(), sendMessageVo.getExtCode()); log.info("請(qǐng)求發(fā)送短信返回值>>>>>>>>>>>>>>>>>>{}: "+resultSend); //4.判斷返回結(jié)果 if (ObjectUtils.isEmpty(resultSend)) { return SmsResultUtil.error("請(qǐng)求發(fā)送短信失敗,短信服務(wù)商無響應(yīng)!"); } //5.處理返回信息 JSONObject jsonObject = JSONObject.parseObject(resultSend); String errorCode = jsonObject.get("errorCode").toString(); String status = jsonObject.get("status").toString(); if ("0".equals(errorCode) && "ok".equals(status)) { String msgInfo = jsonObject.getString("msgInfo"); smsResult = SmsResultUtil.returnMessage(SmsConstants.SystemCode.OK, SmsConstants.MessageCode.SUCCESS_CODE, SmsConstants.MessageMsg.SUCCESS_MSG, msgInfo); return smsResult; } else { String errorMsg = jsonObject.getString("errorMsg"); smsResult = SmsResultUtil.returnMessage(SmsConstants.SystemCode.ERROR, SmsConstants.MessageCode.FAIL_CODE, "請(qǐng)求發(fā)送短信失敗,服務(wù)商返回錯(cuò)誤信息為:" + errorMsg, ""); return smsResult; } }catch (Exception e){ log.info("請(qǐng)求發(fā)送短信失敗,系統(tǒng)異常{}", e); e.printStackTrace(); return SmsResultUtil.error("請(qǐng)求發(fā)送短信失敗,系統(tǒng)異常!"); }finally { log.info("發(fā)送短信結(jié)果{}", JSONObject.toJSONString(smsResult)); } }
⑦yml配置文件配置
到此這篇關(guān)于SpringBoot項(xiàng)目實(shí)現(xiàn)短信發(fā)送接口開發(fā)的文章就介紹到這了,更多相關(guān)SpringBoot項(xiàng)目實(shí)現(xiàn)短信發(fā)送接口開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot整合RabbitMQ發(fā)送短信的實(shí)現(xiàn)
- SpringBoot使用榛子云實(shí)現(xiàn)手機(jī)短信發(fā)送驗(yàn)證碼
- Springboot實(shí)現(xiàn)Java阿里短信發(fā)送代碼實(shí)例
- SpringBoot實(shí)現(xiàn)發(fā)送短信的示例代碼
- SpringBoot+Security 發(fā)送短信驗(yàn)證碼的實(shí)現(xiàn)
- Springboot實(shí)現(xiàn)阿里云通信短信服務(wù)有關(guān)短信驗(yàn)證碼的發(fā)送功能
- Spring Boot實(shí)現(xiàn)微信小程序登錄
- Spring Boot 2結(jié)合Spring security + JWT實(shí)現(xiàn)微信小程序登錄
- springboot+jwt+springSecurity微信小程序授權(quán)登錄問題
- Spring?Boot?如何生成微信小程序短連接及發(fā)送短信在短信中打開小程序操作
相關(guān)文章
通過java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)
下面小編就為大家?guī)硪黄ㄟ^java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07Java控制臺(tái)輸入數(shù)組并逆序輸出的方法實(shí)例
這篇文章主要介紹了Java手動(dòng)輸入數(shù)組并逆向輸出的方法實(shí)例,需要的朋友可以參考下。2017-08-08常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明
這篇文章主要介紹了常用校驗(yàn)注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01SpringBoot實(shí)戰(zhàn)教程之新手入門篇
Spring Boot使我們更容易去創(chuàng)建基于Spring的獨(dú)立和產(chǎn)品級(jí)的可以"即時(shí)運(yùn)行"的應(yīng)用和服務(wù),下面這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)戰(zhàn)教程之入門篇的相關(guān)資料,需要的朋友可以參考下2022-03-03JavaEE中關(guān)于ServletConfig的小結(jié)
ServletConfig是針對(duì)特定的Servlet的參數(shù)或?qū)傩浴ervletConfig是表示單獨(dú)的Servlet的配置和參數(shù),只是適用于特定的Servlet。從一個(gè)servlet被實(shí)例化后,對(duì)任何客戶端在任何時(shí)候訪問有效,但僅對(duì)本servlet有效,一個(gè)servlet的ServletConfig對(duì)象不能被另一個(gè)servlet訪問2014-10-10SpringBoot項(xiàng)目整合Redis教程詳解
這篇文章主要介紹了SpringBoot項(xiàng)目整合Redis教程詳解,Redis?是完全開源的,遵守?BSD?協(xié)議,是一個(gè)高性能的?key-value?數(shù)據(jù)庫。感興趣的小伙伴可以參考閱讀本文2023-03-03Java實(shí)現(xiàn)斗地主與猜數(shù)字游戲詳細(xì)流程
這篇文章主要介紹了怎么用Java來寫斗地主種洗牌和發(fā)牌的功能,以及猜數(shù)字的游戲,斗地主相信大家都知道,同時(shí)也知道每一局都要洗牌打亂順序再發(fā)牌,本篇我們就來實(shí)現(xiàn)它們能,感興趣的朋友跟隨文章往下看看吧2022-04-04