java调用短信接口实现发送短信

1.下载接口文件

传送门:https://pan.baidu.com/s/1h1ZGQeA2BUX_WwIkvC4vgA
提取码:2ev3

2.打开java文件夹

下载完打开文件夹选择java
在这里插入图片描述

2.1获取jar包依赖

然后打开lib(将所需要的的jar包依赖复制出来)
在这里插入图片描述
在这里插入图片描述

2.2获取代码模板

打开src文件目录,将sendsms.java与util文件夹里面的StringUtil.java一块复制
在这里插入图片描述
在这里插入图片描述

3.创建项目

3.1打开eclipse软件,创建一个动态的web项目

在这里插入图片描述
在这里插入图片描述
勾选配置文件
在这里插入图片描述

3.2导入jar包依赖

在这里插入图片描述

3.3创建包导入所需工具类

先导入两个工具类,我这里没有分包存放,我是做一个测试,在写项目分包分层去写(仅供参考)
在这里插入图片描述

4.创建账户

我这里使用的是互亿无线平台的接口
平台地址:https://www.ihuyi.com/
创建完账户就登录进去

4.1账户状态

在这里插入图片描述

5.拿到所需账户密码进入工具类赋值

类名:sendsms
在这里插入图片描述

6.测试

在这里插入图片描述

6.1测试结果

eclipse控制台输出
在这里插入图片描述
手机端接收结果
在这里插入图片描述

7.代码展示

7.1类名:sendsms

package com.tanle;

import java.io.IOException;

import javax.swing.JOptionPane;

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;

public class sendsms {

	private static String Url = "http://106.ihuyi.com/webservice/sms.php?method=Submit";

	public static int code(String st) {

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

		client.getParams().setContentCharset("GBK");
		method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=GBK");

		int mobile_code = (int) ((Math.random() * 9 + 1) * 100000);

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

		NameValuePair[] data = { // 提交短信
				new NameValuePair("account", "这里填写之前图片所教的APIID"), // 查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID
				new NameValuePair("password", "这里填写之前图片所教的APIKEY"), // 查看密码
																					// 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY
				// new NameValuePair("password", util.StringUtil.MD5Encode("密码")),
				new NameValuePair("mobile", st), new NameValuePair("content", content), };
		method.setRequestBody(data);

		try {
			client.executeMethod(method);

			String SubmitResult = method.getResponseBodyAsString();
			// System.out.println(SubmitResult);
			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);
			System.out.println(msg);
			System.out.println(smsid);
			System.out.println(content);
//
//			if ("2".equals(code)) {
//				JOptionPane.showMessageDialog(null, "短信提交成功");
//			}

		} 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 mobile_code;
	}

}

7.2 类名:StringUtil

//接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。
// 账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html
// 注意事项:
//(1)调试期间,请用默认的模板进行测试,默认模板详见接口文档;
//(2)请使用APIID(查看APIID请登录用户中心->验证码短信->产品总览->APIID)及 APIkey来调用接口;
//(3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;

package com.tanle;

import java.security.MessageDigest;

public class StringUtil {
	public static String str;
	public static final String EMPTY_STRING = "";

	private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
			"6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };

	private static String byteToHexString(byte b) {
		int n = b;
		if (n < 0)
			n = 256 + n;
		int d1 = n / 16;
		int d2 = n % 16;
		return hexDigits[d1] + hexDigits[d2];
	}

	/**
	 * 转换字节数组为16进制字串
	 * @param b 字节数组
	 * @return 16进制字串
	 */
	public static String byteArrayToHexString(byte[] b) {
		StringBuffer resultSb = new StringBuffer();
		for (int i = 0; i < b.length; i++) {
			resultSb.append(byteToHexString(b[i]));
		}
		return resultSb.toString();
	}

	public static String MD5Encode(String origin) {
		String resultString = null;
		try {
			resultString = new String(origin);
			MessageDigest md = MessageDigest.getInstance("MD5");
			resultString = byteArrayToHexString(md.digest(resultString
					.getBytes()));
		} catch (Exception ex) {
		}
		return resultString;
	}

}

7.3 测试类

package com.tanle;

public class test {
	public static void main(String[] args) {
		int code = sendsms.code("这里填写接收方电脑号码");
		System.out.println("发送成功:"+code);
	}
}

8.总结

  1. 这里我只是通过调用接口测试,是写在main方法里面的,这个可以根据实例添加到项目中。
  2. 感谢观看,有不足之处欢迎指出!

猜你喜欢

转载自blog.csdn.net/Smootht/article/details/106910186