Java短信对接_java对接短信平台

本文介绍了一个使用Java编写的类`XxkSmsCore`,该类用于对接信信客短信平台。类中包含了编码、计算MD5值、发起POST请求及发送短信的方法。通过设置短信模板编号、参数、接收号码和签名,实现了短信的发送功能。
摘要由CSDN通过智能技术生成

importjava.io.BufferedReader;importjava.io.DataOutputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.security.MessageDigest;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importnet.sf.json.JSONObject;/*** 信信客短信工具类*/

public class XxkSmsCore extendsSmsCore {private static Log logger = LogFactory.getLog(XxkSmsCore.class);//转码

public String encode(String input) throwsException {return URLEncoder.encode(input, "UTF-8");

}//计算 MD5 值

public static String md5(String input) throwsException {byte[] digest = MessageDigest.getInstance("MD5").digest(input.getBytes("UTF-8"));

StringBuffer sb= newStringBuffer();for (int i = 0; i < digest.length; i++) {

sb.append(String.format("%02x", Integer.valueOf(digest[i] & 0xFF)));

}returnsb.toString();

}//发起 POST 请求

public String post(String url, String data) throwsException {//打开连接

HttpURLConnection conn = (HttpURLConnection) (newURL(url)).openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setRequestMethod("POST");

conn.setUseCaches(false);

conn.connect();//输出参数

DataOutputStream dos = newDataOutputStream(conn.getOutputStream());

dos.writeBytes(data);

dos.flush();

dos.close();//读取响应

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line=br.readLine();

br.close();//关闭连接

conn.disconnect();returnline;

}/*** 短信发送接口

*

*@paramsmsTemplateCode

* 短信模板编号

*@paramsmsParam

* 短信模板变量 {\"code\":\"" + Math.random() + "\"}

*@paramrecNum

* 接收号码

*@paramrecNum

* 短信签名

*@throwsException*/

public ResultUtil send(SmsParam smsParam) throwsException {

ResultUtil rs=ResultUtil.fail();//参数

String url = "http://www.xinxinke.com/api/send";

String sign= md5(smsParam.getAppId() + smsParam.getAppKey() +smsParam.getMobile());//拼接

StringBuffer data = newStringBuffer();

data.append("").append("dev_id").append("=").append(encode(smsParam.getAppId()));

data.append("&").append("sign").append("=").append(encode(sign));

data.append("&").append("sms_template_code").append("=").append(encode(smsParam.getSmsTemplateCode()));

data.append("&").append("sms_param").append("=").append(encode(smsParam.getContent()));

data.append("&").append("rec_num").append("=").append(encode(smsParam.getMobile()));

data.append("&").append("sms_sign").append("=").append(encode(smsParam.getSignName()));

logger.info("信信客短信发送参数,手机号码:" + smsParam.getMobile() + ",验证码:" + smsParam.getContent() + ",短信签名:" + smsParam.getSignName() + ",短信模板:" +smsParam.getSmsTemplateCode());

String response=post(url, data.toString());

logger.info("信信客短信发送响应,response:" +response);

JSONObject jsonObject=JSONObject.fromObject(response);

String code= jsonObject.getString("code");if ("25010".equals(code)) {return ResultUtil.ok().set("code", "200").set("msg", "发送成功!");

}return rs.set("msg", jsonObject.getString("data"));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值