SpringBoot項(xiàng)目實(shí)現(xiàn)短信發(fā)送接口開發(fā)的實(shí)踐
一. 短信接口實(shí)現(xiàn)
描述:請求第三方短信接口平臺(tái)(而第三方短信平臺(tái)的接口請求是webservice方式實(shí)現(xiàn)的),此時(shí)我們要測試接口是否通,要用的工具SoapUI測試工具, 不能用PostMan,即使用post組裝完參數(shù)請求該短信平臺(tái)接口也不會(huì)通的(請求之前要ping通IP,只有在同一網(wǎng)段才可請求.或者使用VPN遠(yuǎn)程連接也可請求),接口通了之后.開始裸代碼.代碼使用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)請求接口地址,后邊要加問號(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("開始請求發(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("請求發(fā)送短信返回值>>>>>>>>>>>>>>>>>>{}: "+resultSend);
//4.判斷返回結(jié)果
if (ObjectUtils.isEmpty(resultSend)) {
return SmsResultUtil.error("請求發(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, "請求發(fā)送短信失敗,服務(wù)商返回錯(cuò)誤信息為:" + errorMsg, "");
return smsResult;
}
}catch (Exception e){
log.info("請求發(fā)送短信失敗,系統(tǒng)異常{}", e);
e.printStackTrace();
return SmsResultUtil.error("請求發(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)容請搜索腳本之家以前的文章或繼續(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中創(chuàng)建線程池的幾種方式以及區(qū)別
創(chuàng)建線程池有多種方式,主要通過 Java 的 java.util.concurrent 包提供的 Executors 工具類來實(shí)現(xiàn),本文給大家介紹了幾種常見的線程池類型及其區(qū)別,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-11-11
Springmvc項(xiàng)目web.xml中servlet-mapping路徑映射配置注意說明
這篇文章主要介紹了Springmvc項(xiàng)目web.xml中servlet-mapping路徑映射配置注意說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
spring boot整合scurity做簡單的登錄校驗(yàn)的實(shí)現(xiàn)
這篇文章主要介紹了spring boot整合scurity做簡單的登錄校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
spring aop action中驗(yàn)證用戶登錄狀態(tài)的實(shí)例代碼
本篇文章主要介紹了spring aop action中驗(yàn)證用戶登錄狀態(tài)的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
如何基于LoadingCache實(shí)現(xiàn)Java本地緩存
這篇文章主要介紹了如何基于LoadingCache實(shí)現(xiàn)Java本地緩存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

