短信平台API接口demo示例-JAVA/Message/XSend

DEMO:Message/XSend 【短信平台API接口demo示例-JAVA/Message/XSend】原文链接

  • 支持JDK版本:1.5以上
  • 依赖的jar包:httpclient-4.5.3.jar、httpcore-4.4.14.jar、commons-logging1.1.1.jar、fastjson-1.2.75.jar
org.apache.httpcomponents httpclient 4.5.3 org.apache.httpcomponents httpcore 4.4.14 commons-logging commons-logging 1.1.1 com.alibaba fastjson 1.2.75



代码示列 MessageXSendDemo
package com.submail.demo.message; import java.io.IOException; import java.util.Map; import java.util.TreeMap; import com.alibaba.fastjson.JSONObject; import com.submail.demo.RequestEncoder; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; public class MessageXsendDemo { public static final String TIMESTAMP = "https://api.mysubmail.com/service/timestamp"; private static final String URL = "https://api.mysubmail.com/message/xsend"; public static final String TYPE_MD5 = "md5"; public static final String TYPE_SHA1 = "sha1"; public static void main(String[] args) { TreeMap requestData = https://www.it610.com/article/new TreeMap(); JSONObject vars = new JSONObject(); String appid =""; String appkey = ""; String to = "176xxxx149"; String project = "CtdN24"; String sign_type = "md5"; String sign_version = "2"; vars.put("code", "3314"); vars.put("name", "张三丰"); //组合请求数据 requestData.put("appid", appid); requestData.put("to", to); requestData.put("project", project); if (sign_type.equals(TYPE_MD5) || sign_type.equals(TYPE_SHA1)) { String timestamp = getTimestamp(); requestData.put("timestamp", timestamp); requestData.put("sign_type", sign_type); requestData.put("sign_version", sign_version); String signStr = appid + appkey + RequestEncoder.formatRequest(requestData) + appid + appkey; System.out.println(signStr); requestData.put("signature", RequestEncoder.encode(sign_type, signStr)); } else { requestData.put("signature", appkey); } requestData.put("vars", vars.toJSONString()); //post请求 HttpPost httpPost = new HttpPost(URL); httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-Type", "application/json"); StringEntity entity = new StringEntity(JSONObject.toJSONString(requestData), "UTF-8"); httpPost.setEntity(entity); try { CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build(); HttpResponse response = closeableHttpClient.execute(httpPost); HttpEntity httpEntity = response.getEntity(); if (httpEntity != null) { String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); System.out.println(jsonStr); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }//获取时间戳 private static String getTimestamp() { CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build(); HttpGet httpget = new HttpGet(TIMESTAMP); try { HttpResponse response = closeableHttpClient.execute(httpget); HttpEntity httpEntity = response.getEntity(); String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); if (jsonStr != null) { JSONObject json = JSONObject.parseObject(jsonStr); return json.getString("timestamp"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }

RequestEncoder
package com.submail.demo; /** * @author zhang * @date 2021/8/4 - 5:52 下午 */import java.security.MessageDigest; import java.util.Iterator; import java.util.Map; import java.util.Set; public class RequestEncoder { private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; public static String encode(String algorithm, String str) { if (str == null) { return null; } try { MessageDigest messageDigest = MessageDigest.getInstance(algorithm); messageDigest.update(str.getBytes("UTF-8")); return getFormattedText(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); }}private static String getFormattedText(byte[] bytes) { int len = bytes.length; StringBuilder buf = new StringBuilder(len * 2); for (int j = 0; j < len; j++) { buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); buf.append(HEX_DIGITS[bytes[j] & 0x0f]); } return buf.toString(); }public static String formatRequest(Map data) { Set keySet = data.keySet(); Iterator it = keySet.iterator(); StringBuffer sb = new StringBuffer(); while (it.hasNext()) { String key = it.next(); Object value = https://www.it610.com/article/data.get(key); if (value instanceof String) { sb.append(key +"=" + value + "& "); } } if (sb.length() != 0) { System.out.println("sb.substring(0, sb.length() - 1) = " + sb.substring(0, sb.length() - 1)); return sb.substring(0, sb.length() - 1); } return null; } }

    推荐阅读