javaweb如何使用华为云短信通知公共类调用

下面我就详细讲解一下如何在Java Web项目中使用华为云短信服务,包括如何调用华为云短信服务SDK以及如何使用短信通知公共类发送短信。

1. 下载并导入SDK依赖

首先,需要下载并导入华为云短信服务的Java SDK依赖。我们可以在华为云短信服务官网下载Java SDK的zip压缩包,解压后得到以下文件:

├── README.md
├── bin
│   ├── smn
│   ├── smn.bat
│   ├── smn.ps1
│   ├── smnpy
│   ├── smnpy.bat
│   └── smnpy.ps1
├── docs
│   ├── SMN-Function-Invocation-Reference.md
│   ├── SMN-SDK-for-Java-User-Guide.md
│   └── examples.md
└── lib
    ├── SMN-SDK-for-Java-1.0.11.jar
    ├── gson-2.3.1.jar
    ├── httpclient-4.5.2.jar
    ├── httpcore-4.4.4.jar
    ├── httpmime-4.5.2.jar
    ├── log4j-1.2.17.jar
    ├── slf4j-api-1.7.18.jar
    └── slf4j-log4j12-1.7.18.jar

其中,lib目录下的SMN-SDK-for-Java-1.0.11.jar就是SDK的核心代码,我们需要将其导入我们的Java Web项目中。

2. 创建短信通知公共类

短信通知公共类是一个封装了短信发送逻辑的Java类,方便我们在项目中使用。我们可以创建一个名为SmsUtil的类,代码如下:

package com.example.utils;

import cn.hutool.core.util.RandomUtil;
import com.huawei.smn.model.request.sms.SmsPublishRequest;
import com.huawei.smn.model.request.sms.SmsPublishReqDto;
import com.huawei.smn.model.response.sms.SmsPublishResponse;
import com.huawei.smn.service.SendSmsService;
import com.huawei.smn.service.SmnServiceFactory;

public class SmsUtil {

    private static final String DOMAIN_NAME = "eu-de-messaging.example.com";//短信服务的用户域名,请根据实际情况修改
    private static final String PROJECT_ID = "your-project-id";//短信服务所在的项目ID,请根据实际情况修改
    private static final String REGION = "eu-de";//短信服务所在的区域,请根据实际情况修改
    private static final String ACCESS_KEY_ID = "your-access-key-id";//账号的Access Key,请根据实际情况修改
    private static final String SECRET_ACCESS_KEY = "your-secret-access-key";//账号的Secret Access Key,请根据实际情况修改

    private static final String SIGN_ID = "your-sign-id";//短信签名的ID,请根据实际情况修改
    private static final String TEMPLATE_ID = "your-template-id";//短信模板的ID,请根据实际情况修改

    public static SmsPublishResponse sendSms(String phoneNumber) {

        //生成随机验证码
        String verifyCode = RandomUtil.randomNumbers(6);

        //创建短信发送请求对象
        SmsPublishReqDto requestDto = new SmsPublishReqDto(SIGN_ID, TEMPLATE_ID, verifyCode, phoneNumber);

        SmsPublishRequest request = new SmsPublishRequest();
        request.setSmsPublishReqDto(requestDto);
        request.setProjectId(PROJECT_ID);

        //初始化短信服务Factory
        SmnServiceFactory factory = new SmnServiceFactory();
        factory.setAccessKeyId(ACCESS_KEY_ID);
        factory.setSecretAccessKey(SECRET_ACCESS_KEY);
        factory.setDomainName(DOMAIN_NAME);
        factory.setRegion(REGION);
        factory.setProjectId(PROJECT_ID);

        //创建短信服务
        SendSmsService smsService = factory.createSmsService();

        //发送短信
        SmsPublishResponse response = smsService.sendSms(request);

        return response;
    }
}

上述代码中,我们先定义了一些常量,如短信服务的用户域名、Access Key、短信签名ID、短信模板ID等。然后定义了一个sendSms方法,该方法接受一个手机号码作为参数,生成一个6位数的随机验证码,然后使用短信发布请求对象和短信服务Factory创建短信服务,最后调用短信服务的sendSms方法发送短信。

3. 调用短信通知公共类发送短信

在我们需要发送短信的地方,可以直接调用SmsUtil.sendSms方法即可发送短信。例如,在用户注册时需要发送短信验证码,可以在注册的控制器中添加如下代码:

package com.example.controller;

import com.example.utils.SmsUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @PostMapping("/register")
    public String register(@RequestParam String phoneNumber) {

        //发送短信验证码
        SmsUtil.sendSms(phoneNumber);

        return "success";
    }
}

上述代码中,我们在用户注册控制器中添加了一个register方法,该方法接受一个手机号码作为参数,在注册时调用SmsUtil.sendSms方法发送短信验证码。这样,用户在注册时就可以收到短信验证码了。

另一个示例是在用户找回密码时需要发送短信验证码,可以在找回密码的控制器中添加如下代码:

package com.example.controller;

import com.example.utils.SmsUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PasswordController {

    @PostMapping("/forgot_password")
    public String forgotPassword(@RequestParam String phoneNumber) {

        //发送短信验证码
        SmsUtil.sendSms(phoneNumber);

        return "success";
    }
}

类似地,在找回密码控制器中也调用了SmsUtil.sendSms方法发送短信验证码。

总结

通过上述步骤,我们可以很方便地在Java Web项目中使用华为云短信服务发送短信通知。我们创建了一个短信通知公共类SmsUtil,并在需要发送短信的地方直接调用该类的sendSms方法即可发送短信。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javaweb如何使用华为云短信通知公共类调用 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • opencv车道线检测的实现方法

    Opencv车道线检测的实现方法 Opencv是一个开源计算机视觉和机器学习库。它提供了许多功能和工具,其中包括车道线检测。本文将详细讲解如何使用Opencv实现车道线检测。 算法概述 车道线检测算法的主要目的是检测图像的边缘,从而可以找到道路的边缘,进而判断车道线的位置。Opencv提供了两种常用的车道线检测算法:Canny边缘检测和霍夫变换。下面将详细讲…

    人工智能概览 2023年5月25日
    00
  • redis 限制内存使用大小的实现

    Redis是一个使用内存作为数据存储方式的高性能key-value数据库。由于内存资源的限制,设置使用Redis时需要对其进行一定的内存限制,以避免Redis使用过多内存导致服务器宕机。 下面将详细讲解Redis限制内存使用大小的实现攻略。 使用maxmemory配置项 Redis提供了maxmemory配置项,用于设置Redis所使用的内存上限。该配置项的…

    人工智能概览 2023年5月25日
    00
  • Django基础三之视图函数的使用方法

    下面就来详细讲解一下关于“Django基础三之视图函数的使用方法”的完整攻略。 什么是视图函数 Django中,视图函数是处理Web请求并返回Web响应的函数。其作用是接收Web请求,进行处理并返回Web响应,从而构建出了整个Web应用程序。 视图函数的创建 在Django应用程序中,可以通过以下步骤来创建视图函数: 打开工程目录下的views.py文件; …

    人工智能概览 2023年5月25日
    00
  • 基于Tensorflow使用CPU而不用GPU问题的解决

    接下来我会详细讲解如何使用Tensorflow在CPU上运行。大体流程如下: 安装Tensorflow CPU版 由于GPU需要独立的显卡支持,所以需要单独安装Tensorflow GPU版。而使用CPU时,则只需要安装CPU版即可。可以通过以下命令安装: pip install –upgrade tensorflow-cpu 测试安装是否成功 安装完成后…

    人工智能概论 2023年5月24日
    00
  • Windows安装nginx1.10.1反向代理访问IIS网站

    下面是“Windows安装nginx1.10.1反向代理访问IIS网站”的完整攻略及示例说明: 安装nginx1.10.1 从nginx官方网站(http://nginx.org/en/download.html)下载Windows版本的nginx1.10.1; 解压下载的文件到任意一个路径,例如C:\nginx; 进入解压后的目录,双击运行nginx.ex…

    人工智能概览 2023年5月25日
    00
  • Python利用PyMuPDF实现PDF文件处理

    下面我将为您详细讲解Python利用PyMuPDF实现PDF文件处理的完整攻略。 概述 PyMuPDF是一个Python模块,能够实现对PDF文件读取、解析、编辑、创建等操作。在各种PDF文件处理场景中都有广泛的应用,比如:文本提取、PDF合并、PDF解密、PDF加密等。 安装PyMuPDF 在终端输入以下命令即可完成PyMuPDF的安装: pip inst…

    人工智能概览 2023年5月25日
    00
  • Pytorch生成随机数Tensor的方法汇总

    PyTorch生成随机数Tensor的方法汇总可以使用以下方式: 1. 使用torch.rand方法创建随机数Tensor 使用torch.rand方法可以创建一个给定形状的张量,并根据指定规则填充随机值。 示例如下: import torch # 创建一个形状为(2,3)的张量,所有的值都是随机生成的 rand_tensor = torch.rand(2,…

    人工智能概论 2023年5月25日
    00
  • Django 序列化的具体使用

    Django 是一个流行的 Python Web 框架,具有高度可扩展性和易于维护性。在 Django 中,序列化是指将 Django 模型(Model)转换为 Python 数据类型,并将其转换为一种格式,以便可以将其存储在文件中、通过 HTTP 传输或用于其他目的。Django 内置了序列化与反序列化功能,可以方便地实现数据的导入和导出。 下面详细讲解 …

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部