Skip to content

Commit

Permalink
新增乐云短信网关工具类
Browse files Browse the repository at this point in the history
  • Loading branch information
think-gem committed Jul 15, 2018
1 parent bf36181 commit b434fe7
Showing 1 changed file with 126 additions and 0 deletions.
126 changes: 126 additions & 0 deletions src/main/java/com/thinkgem/jeesite/common/utils/SmsLeyunUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
package com.thinkgem.jeesite.common.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* 乐云短信
*/
public class SmsLeyunUtils {

private final static Logger logger = LoggerFactory.getLogger(SmsLeyunUtils.class);
private final static String url = "http://lehuo520.cn/a/sms/api"; //账号的平台url地址
private final static String data = "username=jeesite&password=jeesite.com"; //账号的平台账号密码

public static void main(String[] args) {
String phone = "18500000000"; //收短信人手机号码;例如:18500000000 支持多号码,号码之间用英文逗号隔开,最多100个
String content = "【JeeSite】您好,您的验证码是:123456(请勿透露给其他人)感谢您的使用。"; //输入需要发送内容;例如:你好这是一条测试短信
String smsid = ""; //短信id,查询短信状态报告时需要,可为空
String sendTime = ""; //发送时间,为空立即发送
System.out.println(send(content, phone, sendTime)); //发短信
System.out.println(status(smsid, phone)); //取状态
System.out.println(reply()); //取上行 回复短信
}

/**
* 发送短信
* @param content,phone,sendtime
* @return {"result":"0","describing":"提交成功","sms":[{"phone":"18073110001,18073110002","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"3"}]}
*/
public static String send(String content, String phone, String sendTime) {
String res = "";
try {
String param = data + "&phone=" + phone + "&content=" + URLEncoder.encode(content, "UTF-8")
+ "&sendTime=" + sendTime;
res = connectURL(url + "/send", param);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return res;

}

/**
* 获取状态
* @param smsid,phone可为空,为空取最近两天未获取状态报告,沦询间隔时间不能低于5分钟
* @return 请求错误返回页面示例: {"result":"-1","describing":"帐号不存在,请检查用户名或者密码是否正确","sms":[]} 请求成功返回页面示例:
* {"result":"0","describing":"提交成功","sms":[{"phone":"18073110001","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"7"},{"phone":"18073110001","smsid":"83bd18f1d48b4cc9b9fe7810c768ac43","status":"8"}]}
*/
public static String status(String smsid, String phone) {
String res = "";
try {
String param = data + "&smsid=" + smsid;
res = connectURL(url + "/status", param);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return res;

}

/**
* 获取回复
* @param smsid:下发短信对应短信ID,taskId同一批任务ID
* @return {"result":"0","sms":[{"phone":"18073110001","neirong":"已收到","taskId":"83bd18f1d48b4cc9b9fe7810c768ac43"},"smsId":"83bd18f1d48b48j9b9fe7810c768ac43"}]}
*/
public static String reply() {
String res = "";
try {
String param = data;
res = connectURL(url + "/query", param);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return res;
}

/**
* 进行http提交
* @param
* @return
* @throws IOException
* @throws Exception
*/
private static String connectURL(String url, String param) throws IOException {
String res = "";
long startt = System.currentTimeMillis();
HttpURLConnection urlConn = null;
URL url1 = new URL(url);
urlConn = (HttpURLConnection) url1.openConnection();
urlConn.setRequestMethod("POST");
urlConn.setDoOutput(true);
OutputStream out = null;
BufferedReader rd = null;
try{
out = urlConn.getOutputStream();
out.write(param.getBytes("UTF-8"));
out.flush();
rd = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8"));
StringBuffer sb = new StringBuffer();
int ch;
while ((ch = rd.read()) > -1) {
sb.append((char) ch);
}
res = sb.toString().trim();
}finally {
if (out!=null){
out.close();
}
if (rd!=null){
rd.close();
}
}
long end = System.currentTimeMillis();
logger.debug("耗时:" + (end - startt));
return res;
}

}

0 comments on commit b434fe7

Please sign in to comment.