Java实现手机短信验证码(互亿无线)

互亿无线

互亿无线是一家提供电信类增值服务插件以及其他相关插件的公司,是中国移动、中国联通、中国电信三大运营商的战略合作伙伴与工信部认定的电信增值业务服务商。公司旗下运营三大业务平台:数字奖励营销活动平台、应用短信平台、营销短信平台。

官网:短信api_短信接口api_短信接口验证码_短信验证码API_短信通知api接口_互亿无线

实现方法

1、pom.xml文件导包

XML 复制代码
        <!--    短信    --> 
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.0</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>

2、创建发送短信工具类

一般把这个类放到util工具目录下(我自己是在若依框架下的项目)

java 复制代码
package com.ruoyi.common.utils;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.io.IOException;


public class SendSmsUtil {
    private static final String URL = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; //国内请求路径
    private static final String APPID = "******(这里填写自己的APPID)";
    private static final String APIKEY = "*****(这里填写自己的APIKEY)";

    public static String SMS(String number) throws HttpException, IOException{

        HttpClient client = new HttpClient();
        PostMethod method = new PostMethod(URL);

        client.getParams().setContentCharset("utf-8");
        method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=utf-8");
        //随机编号
        int mobile_code = (int)((Math.random()*9+1)*100000);

        String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");

        NameValuePair[] data = {//提交短信
                new NameValuePair("account",APPID ), //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID
                new NameValuePair("password", APIKEY), //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY
                new NameValuePair("mobile", number),
                new NameValuePair("content", content),
        };
        method.setRequestBody(data);

        try {
            client.executeMethod(method);

            String SubmitResult =method.getResponseBodyAsString();


            Document doc = DocumentHelper.parseText(SubmitResult);
            Element root = doc.getRootElement();

            String code = root.elementText("code");
            String msg = root.elementText("msg");
            String smsid = root.elementText("smsid");

            System.out.println("code"+code);
            System.out.println("msg"+msg);
            System.out.println("smsid"+smsid);
            System.out.println("mo"+mobile_code);

            if("2".equals(code)){
                System.out.println("短信提交成功");
                System.out.println(mobile_code);
                return mobile_code+"";
            }

        } catch (HttpException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "";
    }
}

注意!!!

在写工具类之前,要先去互亿无线官网注册账号,获取到你个人的一个APPID和APIKEY。

3、Contriller控制层调用工具类

java 复制代码
//获取验证码
@RequestMapping("/sendCode")
    public void sendCode(HttpServletRequest req, PrintWriter pw)
            throws ServletException, IOException {
        String number=req.getParameter("number");
        String strCode= SendSmsUtil.SMS(number);
        req.getSession().setAttribute("code", strCode);
        System.out.println("strCode"+strCode);
        if(strCode!=""){
            pw.write("success");
        }
    }

4、前端代码

html 复制代码
//界面显示
电话号码: <input type="text" id="number" name="number"  placeholder="电话" />
验证码: <input type="text" id="captcha" name="captcha"   />
<input type="button" value="获取验证码" id="update" onclick="sendSms();"/>
javascript 复制代码
function sendSms() {
				var number = $("#number").val();
				$.post("/html/sendCode",{number:number},function (data) {
					if (data == "success"){
						var second = 60;
						console.log("发送成功");
					}
				})
			}

可以参考这两篇文章:

Java实现手机发送短信验证码_java发送短信验证码-CSDN博客

Java短信验证码-互亿无线_互亿无线 工具类-CSDN博客

相关推荐
FIN技术铺3 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
前端百草阁7 分钟前
【TS简单上手,快速入门教程】————适合零基础
javascript·typescript
彭世瑜7 分钟前
ts: TypeScript跳过检查/忽略类型检查
前端·javascript·typescript
FØund4048 分钟前
antd form.setFieldsValue问题总结
前端·react.js·typescript·html
Backstroke fish9 分钟前
Token刷新机制
前端·javascript·vue.js·typescript·vue
zwjapple9 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five10 分钟前
TypeScript项目中Axios的封装
开发语言·前端·javascript
小曲程序10 分钟前
vue3 封装request请求
java·前端·typescript·vue
临枫54110 分钟前
Nuxt3封装网络请求 useFetch & $fetch
前端·javascript·vue.js·typescript
酷酷的威朗普11 分钟前
医院绩效考核系统
javascript·css·vue.js·typescript·node.js·echarts·html5