package com.jwinni.http;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import com.jwinni.unit.Https;
import com.jwinni.unit.MD5;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpUtil;
import mobset.saxListener;
public class hutoolSend {
public static void main(String[] args) throws Exception {
//url地址
String url = "http:/sms3.mobset.com:8095/SDK3/Sms";
//企业id
String corpId = "305552";
//用户名
String LoginName = "admin";
//密码
String strPwsd= "";
//手机号,多个手机号用英文字母 ,
String PhoneNumbers = "";
//短信内容
String Content = "通知:下午休假";
//扩展通道号
String AddNum = "";
//定时短信
String TimerSend = "";
Date now = new Date();
//日期格式化
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String timeStamp = dateFormat.format(now);
//MD5加密方式
String SecretKey =md5(corpId+strPwsd+timeStamp);
System.out.println(strPwsd.toLowerCase());
System.out.println(timeStamp);
String contexts=URLEncoder.encode(Content, "utf-8");//转码
String TimerSends=URLEncoder.encode(TimerSend, "utf-8");//定时发送的时间格式
//Methods = SmsSend为发送短信,SmsGetRecv取回复短信,SmsGetReport取短信状态,SmsGetBalance取账号剩余短信量,SmsGetSign取短信签名。
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("Methods", "SmsSend");
paramMap.put("CorpID", corpId);
paramMap.put("LoginName", LoginName);
paramMap.put("TimeStamp", timeStamp);
paramMap.put("SecretKey", SecretKey);
paramMap.put("PhoneNumbers", PhoneNumbers);
paramMap.put("Content", Content);
//参数为1 默认长短信发送
paramMap.put("LongSms", "1");
System.out.println(HttpUtil.post(url, paramMap));
}
//MD5加密
public static String md5(String str) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
str = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
}
附录: http短信接口文档
本短信接口采用HTTP或HTTPS协议作为承载的传输协议,通过不同的参数实现不同的功能:
注意事项:
1:在使用https协议进行连接时,请设置参数,当服务器的证书错误或服务器的证书过期时仍进行连接。
2:GET请求方式有链接长度限制(600字节),若内容过长请使用post方式请求
支持协议:HTTPS
HTTP版本:HTTP/1.1
编码格式:utf-8
支持方法:GET、POST
返回格式:JSON
请求地址:
平台 | 企业ID范围 | 协议 | 请求地址 |
---|---|---|---|
平台1 | 企业ID100000~199999 | GET,POST | |
http://sms.mobset.com:8095/SDK3/Sms <推荐> https://sms.mobset.com:843/SDK3/SMS | |||
平台2 | 企业ID200000~299999 | ||
http://sms2.mobset.com:8095/SDK3/Sms<推荐> https://sms2.mobset.com:843/SDK3/SMS | |||
平台3 | 企业ID300000~399999 | ||
http://sms3.mobset.com:8095/SDK3/Sms <推荐> https://sms3.mobset.com:843/SDK3/Sms |
系统参数:
名称 | 描述 | 是否必须 | 提示 | 示例值 |
---|---|---|---|---|
CorpID | 登录时使用的企业ID | 是 | 在短信易平台开户时为每个企业分配的唯一代码,注意企业ID与域名对应 | CorpID=300000 |
LoginName | 登录名 | 是 | 不能使用中文作为登录名 | LoginName=Admin |
Password | 登录密码 | 否 | 用来生成“SecretKey”,不单独作为参数传递 | Password=123456 |
SecretKey | 密钥 | 是 | 将CorpID、Password(登录密码)、TimeStamp,这三个参数以字符串形式串接在一起,然后再使用MD5加密,MD5结果为32位字符串,不限大小写。密钥:MD5(CorpID+Password+TimeStamp) | SecretKey=MD5(300000 + 123456 + 20200427104830) |
TimeStamp | 时间戳,用于动态加密 | 是 | 格式为YYYYMMDDHHMMSS(年月日时分秒),注意:使用24小时制北京时间,并且保证此时间与标准时间相差不超过20分钟,否则服务器会拒绝请求。 | TimeStamp=20200427104830 |
Methods | 请求方法,用于判断调用的方法 | 是 | SmsSend为发送短信 SmsGetRecv取回复短信 SmsGetReport取短信状态 SmsGetBalance取账号剩余短信量 SmsGetSign取短信签名。 注意:不要放在内容(Content)后面作为参数传递 | Methods=SmsSend |
PhoneNumbers | 发送目标号码,多个号码可以使用,号分隔。 | 是 | 注意一条请求中号码不要超过50个,过多号码容易产生超时,从而造成不断重复发送。 | PhoneNumbers=13266541234 |
Content | 要发送的短信内容。 | 是 | 编码格式为UTF-8编码 | Content=收到请回复,谢谢 |
LongSms | 长短信参数,默认为长短信,该参数为0时不为长短信 | 否 | 长短信有以下特点: 1、分开多条发送的短信在手机屏幕上显示的是一整条。 2、每条拆分的短信最多支持67个字。 3、某些手机可能无法收到或无法显示长短信。 4、长短信只有一个签名,但非长短信,每条短信都需要带签名。 5、即使以长短信方式发送,当短信内容不足70字时,仍以普通短信发出。 | LongSms=1 |
TimerSend | 定时发送时间。 | 否 | 格式为"2020-05-01 12:00:00",定时发送指的是先提交短信,当到达预置的定时时间才真正下发。 | &TimerSend=2020-05-01 12:00:00 |
AddNum | 扩展号码,如果有,会在发送号码后添加上此号码 | 否 | 受不同运营商及不同地区影响,可扩展号码的长度是不定的,建议使用前进行不同长度的附加码测试 | AddNum=1 |
完整示例 | http://sms3.mobset.com:8095/SDK3/Sms?Methods=SmsSend& CorpID=300000&LoginName=Admin&SecretKey=MD5(300000 + 123456 + 20200427104830)&TimeStamp=20200427104830& PhoneNumbers=13266541234&Content="收到请回复,谢谢" | 参数中“Methods”不要置于内容“Content”后面,建议Content参数放置最后 |
发送模块响应返回
取回复短信模块(Methods=SmsGetRecv)
取短信状态报告模块(Methods=SmsGetReport)
取短信余额模块(Methods=SmsGetBalance)
取短信签名模块(Methods=SmsGetSign)