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