欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項目實現(xiàn)短信發(fā)送接口開發(fā)的實踐

 更新時間:2021年10月27日 08:31:58   作者:枝頭小寨  
本文主要介紹了SpringBoot項目實現(xiàn)短信發(fā)送接口開發(fā)的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一. 短信接口實現(xiàn)

描述:請求第三方短信接口平臺(而第三方短信平臺的接口請求是webservice方式實現(xiàn)的),此時我們要測試接口是否通,要用的工具SoapUI測試工具, 不能用PostMan,即使用post組裝完參數(shù)請求該短信平臺接口也不會通的(請求之前要ping通IP,只有在同一網(wǎng)段才可請求.或者使用VPN遠程連接也可請求),接口通了之后.開始裸代碼.代碼使用IDEA工具去完成 , 實現(xiàn)邏輯根據(jù)需求而定.

首先導(dǎo)入兩個依賴

<!--生成短信代碼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方式實現(xiàn)(IDEA)

①創(chuàng)建一個新的包,鼠標(biāo)點擊此包
②找到generate點擊

在這里插入圖片描述

③會出現(xiàn)以下界面,這里要注意 WSDL URL 地址要改為(短信平臺請求接口地址,后邊要加問號和wsdl ) 并也要更改Apache Axis 為 Glassfish /JAX-WS

在這里插入圖片描述

④更改后出現(xiàn)此界面,點擊OK后 , 會在新創(chuàng)建的包下出現(xiàn)idea自動創(chuàng)建的文件 .

在這里插入圖片描述

⑤此時 把.class文件刪除就好了,留下此三個文件(注意:SMSNewAllService類可以理解為打通webservice接口的實現(xiàn)類)

在這里插入圖片描述

⑥業(yè)務(wù)實現(xiàn)及調(diào)用

package com.enn.claim.config.sms;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 獲取配置文件中: 發(fā)送短信平臺地址/賬號/密碼/短信類型/費用部門等 參數(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ù)校驗
        sendMessageVo = this.validParams(sendMessageVo);
        // 1.創(chuàng)建返回結(jié)果集
        SendSmsResult smsResult = new SendSmsResult();
        try {
            //2.拼裝發(fā)送手機號碼
            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ù)商返回錯誤信息為:" + 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àn)短信發(fā)送接口開發(fā)的文章就介紹到這了,更多相關(guān)SpringBoot項目實現(xiàn)短信發(fā)送接口開發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過java反射機制動態(tài)調(diào)用某方法的總結(jié)(推薦)

    通過java反射機制動態(tài)調(diào)用某方法的總結(jié)(推薦)

    下面小編就為大家?guī)硪黄ㄟ^java反射機制動態(tài)調(diào)用某方法的總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • selenium操作隱藏的元素(python+Java)

    selenium操作隱藏的元素(python+Java)

    這篇文章主要介紹了selenium操作隱藏的元素(python+Java),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Java控制臺輸入數(shù)組并逆序輸出的方法實例

    Java控制臺輸入數(shù)組并逆序輸出的方法實例

    這篇文章主要介紹了Java手動輸入數(shù)組并逆向輸出的方法實例,需要的朋友可以參考下。
    2017-08-08
  • Rocketmq事務(wù)消息之半消息詳解

    Rocketmq事務(wù)消息之半消息詳解

    這篇文章主要介紹了Rocketmq事務(wù)消息之半消息詳解,RocketMQ的事務(wù)消息支持在業(yè)務(wù)邏輯與發(fā)送消息之間提供事務(wù)保證,RocketMQ通過兩階段的方式提供事務(wù)消息的支持,需要的朋友可以參考下
    2023-09-09
  • 如何解決Java多線程死鎖問題

    如何解決Java多線程死鎖問題

    死鎖是一個很嚴(yán)重的、必須要引起重視的問題,本文主要介紹了死鎖的定義,解決方法和面試會遇到的問題,感興趣的可以了解一下
    2021-05-05
  • 常用校驗注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明

    常用校驗注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明

    這篇文章主要介紹了常用校驗注解之@NotNull,@NotBlank,@NotEmpty的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot實戰(zhàn)教程之新手入門篇

    SpringBoot實戰(zhàn)教程之新手入門篇

    Spring Boot使我們更容易去創(chuàng)建基于Spring的獨立和產(chǎn)品級的可以"即時運行"的應(yīng)用和服務(wù),下面這篇文章主要給大家介紹了關(guān)于SpringBoot實戰(zhàn)教程之入門篇的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • JavaEE中關(guān)于ServletConfig的小結(jié)

    JavaEE中關(guān)于ServletConfig的小結(jié)

    ServletConfig是針對特定的Servlet的參數(shù)或?qū)傩?。ServletConfig是表示單獨的Servlet的配置和參數(shù),只是適用于特定的Servlet。從一個servlet被實例化后,對任何客戶端在任何時候訪問有效,但僅對本servlet有效,一個servlet的ServletConfig對象不能被另一個servlet訪問
    2014-10-10
  • SpringBoot項目整合Redis教程詳解

    SpringBoot項目整合Redis教程詳解

    這篇文章主要介紹了SpringBoot項目整合Redis教程詳解,Redis?是完全開源的,遵守?BSD?協(xié)議,是一個高性能的?key-value?數(shù)據(jù)庫。感興趣的小伙伴可以參考閱讀本文
    2023-03-03
  • Java實現(xiàn)斗地主與猜數(shù)字游戲詳細流程

    Java實現(xiàn)斗地主與猜數(shù)字游戲詳細流程

    這篇文章主要介紹了怎么用Java來寫斗地主種洗牌和發(fā)牌的功能,以及猜數(shù)字的游戲,斗地主相信大家都知道,同時也知道每一局都要洗牌打亂順序再發(fā)牌,本篇我們就來實現(xiàn)它們能,感興趣的朋友跟隨文章往下看看吧
    2022-04-04

最新評論