欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java通过SMS短信平台实现发短信功能

程序员文章站 2022-04-26 13:32:37
...

前言

本文记录的是使用中国网建的SMS短信平台,使用前需要注册,这里只记录SMS接口的使用。

1、登录http://sms.webchinese.cn/User/?action=key网站注册。

Java通过SMS短信平台实现发短信功能

2、注册后直接登录。

Java通过SMS短信平台实现发短信功能

3、登录成功后,首先找到短信秘钥,调接口需要。

找到秘钥后,要先把签名的内容填入,这样在调接口后会验证签名的。网站也有API接口调用案例(短信API接口菜单)。

Java通过SMS短信平台实现发短信功能

4、POM引入

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>

5、SendMsgUtil工具类。

本工具类使用的是GBK编码发送接口,每个注册的用户有5条免费的。

GBK编码发送接口地址:
http://gbk.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容 
UTF-8编码发送接口地址:
http://utf8.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容
获取短信数量接口地址(UTF8):
http://sms.webchinese.cn/web_api/SMS/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密
获取短信数量接口地址(GBK):
http://sms.webchinese.cn/web_api/SMS/GBK/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密码

package com.example.mybaties.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

import java.io.IOException;
import java.util.HashMap;

/**
 * @author LST
 * @version 1.0
 * @Description: 短信发送类
 * @date 2020-1-16 14:45
 */
@Slf4j
public class SendMsgUtil {

    public static HashMap<String,String> getMessageStatus(String phone){
        HashMap<String,String> map = new HashMap<String,String>();

        HttpClient client = new HttpClient();

        PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn"); //sms平台接口
        post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置编码集格式

        int num = (int)((Math.random()*9+1)*100000);//6位数验证码
        String code= String.valueOf(num);

        NameValuePair[] data ={new NameValuePair("Uid", "用户名"),//sms平台的用户名
                new NameValuePair("Key", "短信秘钥"),//短信秘钥,不是密码
                new NameValuePair("smsMob",phone),//目的手机号码,多个手机号用半角逗号隔开
                new NameValuePair("smsText","本次验证码为:"+code+""+",有效时间为5分钟")//短信内容,自定义
                 };
        map.put("code", code);
        post.setRequestBody(data);

        try {
            client.executeMethod(post);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //打印状态码和响应头信息
        int statusCode = post.getStatusCode();
        log.info("statusCode:{}",statusCode);
        Header[] headers = post.getResponseHeaders();
        for(Header h : headers) {
            log.info(h.toString());
        }

        String result = null;
        try {
            result = new String(post.getResponseBodyAsString().getBytes("gbk"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info(result); //打印返回的消息状态
        map.put("result", result);

        post.releaseConnection();
        return map;
    }

    public static void main(String[] args) {
        getMessageStatus("手机号码");
    }

}

下图是发送到我手机上的短信内容

Java通过SMS短信平台实现发短信功能

6、返回code

短信发送后返回值 说 明
-1 没有该用户账户
-2 **不正确(不是用户密码)
-3 短信数量不足
-11 该用户被禁用
-14 短信内容出现非法字符
-4 手机号格式不正确
-41 手机号码为空
-42 短信内容为空
大于0 短信发送数量

 

 

 

相关标签: java sms