java(http)实现短信发送

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 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)

你可能感兴趣的:(java,eclipse,intellij-idea,http)