import cn.hutool.core.util.StrUtil;
import com.dlfxzp.common.constant.Constants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
public class HttpSend {
private static Log log = LogFactory.getLog(HttpSend.class);
/**
* 环境参数
*/
//private static String environment = ((Environment) SpringUtils.getBean("environment")).getProperty("spring.profiles.active");
/**
* 短信发送接口
* 建议不超过300字 + 100个手机号码,或者不超过800字 + 30个手机号码
*
* @param phone 接收人号码:多个之间用“,”分割,例如:130000000,12000000000
* @param content 短信类容
* @param sendTime 定时发送时间。可以为空,为空就是立即发送。定时发送格式为年月日时分,如:200803201615。,
* @return int 大于0,这是成功的条数,小于等于0发送失败
*/
public static int send(String phone, String content, String sendTime) {
// todo 暂时注释掉,生产需要放开
// if (!("prod".equals(environment) || "qa".equals(environment))) {
// to = "";
// }
if (StrUtil.isBlank(phone)) {
return 0;
}
try {
String _content = java.net.URLEncoder.encode(content, "UTF-8");
String _param = "Account=" + Constants.sms_user(你自己的用户) + "&Password=" + Constants.sms_pwd(你的密码)
+ "&Phone=" + phone + "&Content=" + _content
+ "&SubCode=&SendTime=" + sendTime;
log.info("短信发送参数为:" + _param);
URL url = null;
HttpURLConnection urlConn = null;
url = new URL(Constants.sms_url(你自己使用平台的url));
urlConn = (HttpURLConnection) url.openConnection();
urlConn.setRequestMethod("POST");
urlConn.setDoOutput(true);
OutputStream out = urlConn.getOutputStream();
out.write(_param.getBytes("GBK"));
out.flush();
out.close();
BufferedReader rd = new BufferedReader(new InputStreamReader(
urlConn.getInputStream(), "UTF-8"));
StringBuffer sb = new StringBuffer();
int ch;
while ((ch = rd.read()) > -1) {
sb.append((char) ch);
}
log.info("短信发送返回结果为:" + sb.toString());
Document document = DocumentHelper.parseText(sb.toString());
Element root = document.getRootElement();
int res = Integer.parseInt(root.elementText("response"));
rd.close();
return res;
} catch (Exception ex) {
log.error("短信发送异常:", ex);
return 0;
}
}
public static String MD5Encode(String sourceString) {
String resultString = null;
try {
resultString = new String(sourceString);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byte2hexString(md.digest(resultString.getBytes()));
} catch (Exception ex) {
ex.printStackTrace();
}
return resultString;
}
public static final String byte2hexString(byte[] bytes) {
StringBuffer bf = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
if ((bytes[i] & 0xff) < 0x10) {
bf.append("0");
}
bf.append(Long.toString(bytes[i] & 0xff, 16));
}
return bf.toString();
}
public static void main(String[] args) {
HttpSend.send("137********", "定量分析指数专屏短信发送", "");
}
}
使用java发送短信业务代码
于 2023-04-13 10:46:24 首次发布