package com.ots.project.tool.sms; import com.alibaba.fastjson.JSON; import com.ots.common.utils.bean.BeanUtils; import com.thoughtworks.xstream.XStream; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; 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.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @Slf4j @Component public class ZjunShortMessageImpl { private final static String PATTERN = "yyyyMMddhhmmss"; public final static String RET_STATUS_SUCCESS = "Success"; public final static String RET_STATUS_FAIL = "Faild"; XStream xstream = new XStream(); String accountId = "12128"; String account = "NDA"; String password = "nda@2019"; String xml = "http://agent.izjun.cn"; Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat(PATTERN); String dateStr = sf.format(date); String str = account + password + dateStr; String sign = MD5Encode(str); public static void main(String[] args) throws Exception { XStream xstream = new XStream(); xstream.alias("returnsms", Returnsms.class); String xml = " Success ok 87 68920759 1"; Returnsms returnsms = (Returnsms) xstream.fromXML(xml); System.out.println(JSON.toJSON(returnsms)); ZjunShortMessageImpl impl = new ZjunShortMessageImpl(); Returnsms sendmsg = impl.sendmsg("15521298984", "【掌骏传媒】", "http://139.199.11.114/exam-stu/#/demography/ed860660-95a7-4feb-aab9-f56b1eff1a3c/12/index"); System.out.println(JSON.toJSON(sendmsg)); Returnsms returnsms1 = impl.checkYUE(); System.out.println(JSON.toJSON(returnsms1)); } public Returnsms sendmsg(String mobile, String smsSign, String content) throws Exception { String urlString = xml + "/v2sms.aspx?"; String params = "action=send&userid=" + accountId + "×tamp=" + dateStr + "&sign=" + sign + "&mobile=" + mobile + "&content=" + smsSign + content + "&sendTime=&extno="; return send(urlString, params); } public Returnsms checkYUE() throws Exception { String urlString = xml + "/v2sms.aspx?"; String params = "action=overage&userid=" + accountId + "×tamp=" + dateStr + "&sign=" + sign; return send(urlString, params); } public List getReport() { String urlString = xml + "/v2statusApi.aspx?"; String params = "action=query&userid=" + accountId + "×tamp=" + dateStr + "&sign=" + sign; return sendForReport(urlString, params); } public Returnsms GetMo() throws Exception { String urlString = xml + "/v2callApi.aspx?"; String params = "action=query&userid=" + accountId + "×tamp=" + dateStr + "&sign=" + sign; return send(urlString, params); } public final static String MD5Encode(String s) { try { byte[] btInput = s.getBytes("utf-8"); MessageDigest mdInst = MessageDigest.getInstance("MD5"); mdInst.update(btInput); byte[] md = mdInst.digest(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < md.length; i++) { int val = ((int) md[i]) & 0xff; if (val < 16) { sb.append("0"); } sb.append(Integer.toHexString(val)); } return sb.toString(); } catch (Exception e) { return null; } } private Returnsms send(String urlString, String params) { Returnsms returnsms = new Returnsms(); BufferedReader in = null; HttpURLConnection hp = null; try { URL url = new URL(urlString); hp = (HttpURLConnection) url.openConnection(); byte[] b = params.getBytes("utf-8"); hp.setRequestMethod("POST"); hp.setDoOutput(true); hp.setDoInput(true); OutputStream out = hp.getOutputStream(); out.write(b); out.close(); in = new BufferedReader(new InputStreamReader(hp.getInputStream(), "utf-8")); xstream.alias("returnsms", Returnsms.class); Object fromXML = xstream.fromXML(in); BeanUtils.copyProperties(fromXML, returnsms); return returnsms; } catch (Exception e) { returnsms.setReturnstatus(Returnsms.RET_FAILD); returnsms.setMessage(e.getMessage()); } finally { if (Objects.nonNull(in)) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (Objects.nonNull(hp)) { hp.disconnect(); } } return returnsms; } private List sendForReport(String urlString, String params) { BufferedReader in = null; HttpURLConnection hp = null; try { URL url = new URL(urlString); hp = (HttpURLConnection) url.openConnection(); byte[] b = params.getBytes("utf-8"); hp.setRequestMethod("POST"); hp.setDoOutput(true); hp.setDoInput(true); OutputStream out = hp.getOutputStream(); out.write(b); out.close(); in = new BufferedReader(new InputStreamReader(hp.getInputStream(), "utf-8")); XStream xstream = new XStream(); xstream.setClassLoader(ZjunShortMessageImpl.class.getClassLoader()); xstream.alias("returnsms", ArrayList.class); xstream.alias("statusbox", Statusbox.class); return (List) xstream.fromXML(in); } catch (IOException ioe) { log.error("sendForReport error:{}", ioe.getMessage(), ioe); } finally { if (Objects.nonNull(in)) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (Objects.nonNull(hp)) { hp.disconnect(); } } return null; } }