DEMO:Message/Send

原文链接

  • 支持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>

代码示列

MessageSendDemo

package com.submail.demo.message;
import java.io.IOException;
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 MessageSendDemo {public static final String TIMESTAMP = "https://api.mysubmail.com/service/timestamp";private static final String URL = "https://api.mysubmail.com/message/send";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 to = "176xxxx5149";String content = "【xxxx】你好,你的验证码是2257";String sign_type = "md5";String sign_version = "2";//组合请求数据requestData.put("appid", appid);requestData.put("to", to);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("content", content);//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) &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/Send相关推荐

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

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

  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接口?

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

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

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

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

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

  9. 验证码短信平台API接口的应用

    事实上,现在不论是企业商家还是用户,都现已渐渐离不开短信验证码接口途径了.因为现在很多工作都在经过短信验证码接口实现各种短信服务功用,例如帐号的注册.身份的验证.付出时的提示.物流告诉等等.那么接下来 ...

最新文章

  1. 无需标注数据,利用辅助性旋转损失的自监督GANs,效果堪比现有最好方法
  2. android launcher
  3. 邮件 自动打印 linux,Unix / Linux基本实用程序-打印,电子邮件
  4. 行车记录仪设置php,【必看】如何正确的设置“行车记录仪”
  5. 【框架】[Spring]XML配置实现AOP拦截-切点:JdkRegexpMethodPointcut
  6. 数据字符集mysql主从数据库,分库分表等笔记
  7. ERP财务报表快消失了?用它做财务系统根本不够用
  8. 2-1 CPU多级缓存-缓存一致性.mkv
  9. 反射setAccessible()方法
  10. Exp6 信息收集与漏洞扫描
  11. 验证码计时 -- UIButton setTitle 闪烁问题解决方案
  12. 数据库索引实现(B+,B-,hash)
  13. amr转换成mp3 java_微信开发-将amr格式转换为mp3格式
  14. H266VVC电子书开放下载啦
  15. 如何区别测试计划和测试方案
  16. go开发报 A required privilege is not held by the client 错误
  17. 用大数据与可视化分析有钱任性的瑞幸咖啡,看它和浑水谁在说谎
  18. 关于python搞笑段子精选_你能讲一个让人瞬间爆笑的笑话吗?
  19. 百钱买百鸡,3文钱一只公鸡,2文钱一只母鸡,1文钱可以买3个小鸡,要求用100文钱买100只鸡
  20. 如何把自媒体平台文章同步到WordPress等网站

热门文章

  1. 《拯救大兵雷恩》是一种什么电影?
  2. SNMP网管NAT穿透的问题
  3. linux dx命令,在Linux系统上配置Wine中的DXVK
  4. 重积分和线面积分总结
  5. 14 bs对象.节点名称.name attrs string 获取节点名称 属性 内容
  6. 将DataFrameGroupBy转回DataFrame
  7. python orange3汉化_Python 3.5 in win10 pip install Orange3
  8. 2015年上半年 系统分析师 论文 真题
  9. 机器学习(二)决策树原理剖析及python实现
  10. php 的常用内置函数大全,php常用内置函数