DEMO:Message/MultiXSend

原文链接

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

代码示列

MessageMultiXSendDemo

package com.submail.demo.message;
import java.io.IOException;
import java.util.TreeMap;
import com.alibaba.fastjson.JSONArray;
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 MessageMultiXSendDemo {public static final String TIMESTAMP = "https://api.mysubmail.com/service/timestamp";private static final String URL = "https://api.mysubmail.com/message/multixsend.json";public static final String TYPE_MD5 = "md5";public static final String TYPE_SHA1 = "sha1";public static void main(String[] args) {TreeMap<String, String> requestData = new TreeMap<String, String>();String appid = "";String appkey = "";String project = "CtdN24";String sign_type = "md5";String sign_version = "2";//组合请求数据requestData.put("appid", appid);requestData.put("project", project);JSONObject var1 = new JSONObject();String to1 = "176xxxx5149";var1.put("name", "");var1.put("code", "123452");JSONObject var2 = new JSONObject();String to2 = "176xxxx5149";var2.put("name", "xxx");var2.put("code", "888881");Multi multi = new Multi();multi.add(to1, var1);multi.add(to2, var2);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("multi", multi.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;}
}class Multi{private JSONArray jsonArray;public Multi(){jsonArray=new JSONArray();}public void add(String to,JSONObject vars){JSONObject jobject=new JSONObject();jobject.put("to",to);jobject.put("vars",vars);jsonArray.add(jobject);}public String toJSONString(){return jsonArray.toJSONString();}
}

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) &amp; 0x0f]);buf.append(HEX_DIGITS[bytes[j] &amp; 0x0f]);}return buf.toString();}public static String formatRequest(Map<String, String> data) {Set<String> keySet = data.keySet();Iterator<String> it = keySet.iterator();StringBuffer sb = new StringBuffer();while (it.hasNext()) {String key = it.next();Object value = data.get(key);if (value instanceof String) {sb.append(key + "=" + value + "&amp;");}}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;}
}

短信平台API接口demo示例-JAVA/Message/MultiXSend相关推荐

  1. 短信平台API接口demo示例-JAVA/Message/Send

    DEMO:Message/Send 原文链接 支持JDK版本:1.5以上 依赖的jar包:httpclient-4.5.3.jar.httpcore-4.4.14.jar.commons-loggin ...

  2. 短信平台API接口demo示例-Node/SMS/Send

    DEMO: SMS/Send - 短信发送 原文链接 var request = require('request'); var crypto = require('crypto'); var app ...

  3. 短信平台API接口demo示例-Node/SMS/MultiSend

    DEMO: SMS/MultiSend - 短信一对多发送 原文链接 var request = require('request'); var crypto = require('crypto'); ...

  4. 短信平台API接口demo示例-Node/SMS/XSend

    DEMO: SMS/XSend - 短信模板发送 原文链接 var request = require('request'); var crypto = require('crypto'); var ...

  5. 短信平台API接口demo示例-Python/SMS/MultiSend

    DEMO: SMS/MultiSend - 短信一对多发送 示例代码 原文链接 非加密代码示例 import requests import jsonappid = 'appid' # SUBMAIL ...

  6. 短信API接口demo示例-C#/Message/MultiXSend

    原文链接 #DEMO:Message/MultiXSend 概览 支持.Net版本:2.0以上 依赖三方库 Newtonsoft.Json.dll 代码示列 using System; using S ...

  7. 什么是短信平台api接口?

    自从人类诞生了手机,短信便随之而来,虽然后来有了更多的即时通信工具,如QQ和微信,个人用短信的机会已经很少了,但是对于企业公司来说,短信一直是非常方便的信息传递工具. 那些带有营销性质的企业和商家会通 ...

  8. 短信API接口demo示例-PHP/Message/XSend

    DEMO:Message/XSend 原文链接 概览 加密签名计算方法请参考createSignature.php. 代码示列 <?php/****************** 非加密请求 示例 ...

  9. 短信平台API接口调用-SUBMAIL

    一.下载SDK开发包 前往文档中心 ->SDK 开发包下载页面,下载对应语言的SDK开发包. SUBMAIL 提供多种语言的开发包,SDK 集成了 SUBMAIL 的 API 请求方法,并将 A ...

最新文章

  1. JS如何深度复制对象和数组,避免指针变量引用修改值
  2. 基于JDK 1.8 的 Java 容器UML图
  3. (转)javascript关于运动的各种问题经典总结
  4. 计算机中丢失 MSVCR100.dll
  5. 关于VS2010中F#的使用说明及勘误
  6. response细节点
  7. Modbus协议栈开发笔记之七:Modbus ASCII Slave开发
  8. 异常为当IDENTITY_INSERT设置为OFF时 的解决
  9. 《MYSQL必知必会》—2.MySQL简介
  10. HTML中段落标签和换行标签分别是,HTML 基本标签
  11. 分页加载总页数计算公式
  12. 尚硅谷微服务分布式电商项目《谷粒商城》基础篇学习总结
  13. AI教育甚嚣尘上,“松鼠”、“小猿”们能否重塑教育形态?
  14. 百度网盘高速直链提取
  15. Linux下的gpt分区
  16. 来电转接点击选择联系人按钮-没有出现联系人
  17. 关于最近网上谣言传的很凶的 “太吾绘卷” 游戏源代码的问题。
  18. python求助神器_【python从零开始(被称之为神器的装饰器)】- 环球网校
  19. 2019.11.28
  20. 在ie edge中消除默认出现的密码框小眼睛标志

热门文章

  1. HTML网页实现flv视频播放
  2. 慢慢了解慢慢深入熟练掌握
  3. devstack mysql_安装和使用devstack的笔记
  4. OpenGL深入探索——曲面细分
  5. 解决app一打开白屏和黑屏的问题
  6. 【思维导图】计算机网络第六章应用层
  7. 传说中的oracle的java证书这个样子!
  8. JQuery阻止默认行为
  9. 教大家用按键精灵写一个快手自动抢红包脚本
  10. Maven使用与各配置项详解