短信接口示例

article/2025/9/18 18:43:22
  1. 短信验证码在各类App和网站中广泛使用,这里介绍一些技术对接中常用的接口以及相关实例为各位提供参考。

    首先,预先提供短信模板,保证通道提供稳定服务,平台进行内容审核,而后方能使用通用发送接口发短信,该接口能够自动匹配已经审核通过的模板进行发送。调用模板发送接口时需要用POST或GET方式提交各类参数,如:tpl_id、tpl_value。在创蓝技术平台开发的接口包括:ASP,ASP.NET(C#),C(C++),GO,JAVA,PHP,PYTHON等,不同的接口语音中,在任意应用场景中,各类模板的使用方法基本类似,设置对应的模板id(tpl_id)和相关的变量值(tpl_value)即可。

    以下专门挑出两大常见短信验证码接口语言进行实例说明:

    创蓝短信验证码接口相关内容

    方法/步骤

    1. 一、JAVA语言文档

      a) 短信接口

      package com.bcloud.msg.http;

      import java.io.ByteArrayOutputStream;

      import java.io.InputStream;

      import java.net.URLDecoder;

      import org.apache.commons.httpclient.HttpClient;

      import org.apache.commons.httpclient.HttpStatus;

      import org.apache.commons.httpclient.NameValuePair;

      import org.apache.commons.httpclient.URI;

      import org.apache.commons.httpclient.methods.GetMethod;

      /**

       * @author Beyond

       */

      public class HttpSender {

      /**

       * 

       * @param url 应用地址,类似于http://ip:port/msg/

       * @param account 账号

       * @param pswd 密码

       * @param mobile 手机号码,多个号码使用","分割

       * @param msg 短信内容

       * @param needstatus 是否需要状态报告,需要true,不需要false

       * @return 返回值定义参见HTTP协议文档

       * @throws Exception

       */

      public static String send(String url, String account, String pswd, String mobile, String msg,

      boolean needstatus, String product, String extno) throws Exception {

      HttpClient client = new HttpClient();

      GetMethod method = new GetMethod();

      try {

      URI base = new URI(url, false);

      method.setURI(new URI(base, "HttpSendSM", false));

      method.setQueryString(new NameValuePair[] { 

      new NameValuePair("account", account),

      new NameValuePair("pswd", pswd), 

      new NameValuePair("mobile", mobile),

      new NameValuePair("needstatus", String.valueOf(needstatus)), 

      new NameValuePair("msg", msg),

      new NameValuePair("product", product), 

      new NameValuePair("extno", extno), 

      });

      int result = client.executeMethod(method);

      if (result == HttpStatus.SC_OK) {

      InputStream in = method.getResponseBodyAsStream();

      ByteArrayOutputStream baos = new ByteArrayOutputStream();

      byte[] buffer = new byte[1024];

      int len = 0;

      while ((len = in.read(buffer)) != -1) {

      baos.write(buffer, 0, len);

      }

      return URLDecoder.decode(baos.toString(), "UTF-8");

      } else {

      throw new Exception("HTTP ERROR Status: " + method.getStatusCode() + ":" + method.getStatusText());

      }

      } finally {

      method.releaseConnection();

      }

      }

      /**

       * 

       * @param url 应用地址,类似于http://ip:port/msg/

       * @param account 账号

       * @param pswd 密码

       * @param mobile 手机号码,多个号码使用","分割

       * @param msg 短信内容

       * @param needstatus 是否需要状态报告,需要true,不需要false

       * @return 返回值定义参见HTTP协议文档

       * @throws Exception

       */

      public static String batchSend(String url, String account, String pswd, String mobile, String msg,

      boolean needstatus, String product, String extno) throws Exception {

      HttpClient client = new HttpClient();

      GetMethod method = new GetMethod();

      try {

      URI base = new URI(url, false);

      method.setURI(new URI(base, "HttpBatchSendSM", false));

      method.setQueryString(new NameValuePair[] { 

      new NameValuePair("account", account),

      new NameValuePair("pswd", pswd), 

      new NameValuePair("mobile", mobile),

      new NameValuePair("needstatus", String.valueOf(needstatus)), 

      new NameValuePair("msg", msg),

      new NameValuePair("product", product),

      new NameValuePair("extno", extno), 

      });

      int result = client.executeMethod(method);

      if (result == HttpStatus.SC_OK) {

      InputStream in = method.getResponseBodyAsStream();

      ByteArrayOutputStream baos = new ByteArrayOutputStream();

      byte[] buffer = new byte[1024];

      int len = 0;

      while ((len = in.read(buffer)) != -1) {

      baos.write(buffer, 0, len);

      }

      return URLDecoder.decode(baos.toString(), "UTF-8");

      } else {

      throw new Exception("HTTP ERROR Status: " + method.getStatusCode() + ":" + method.getStatusText());

      }

      } finally {

      method.releaseConnection();

      }

      }

      }

    2. b) 后台示例

      import com.bcloud.msg.http.HttpSender;

      public class HttpSenderTest {

      public static void main(String[] args) {

      String url = "http://222.73.117.158/msg/";// 应用地址

      String account = "询问对接人";// 账号

      String pswd = "询问对接人";// 密码

      String mobile = "13800210021,13800138000";// 手机号码,多个号码使用","分割

      String msg = "亲爱的用户,您的验证码是123456,5分钟内有效。";// 短信内容

      boolean needstatus = true;// 是否需要状态报告,需要true,不需要false

      String product = null;// 产品ID

      String extno = null;// 扩展码

      try {

      String returnString = HttpSender.batchSend(url, account, pswd, mobile, msg, needstatus, product, extno);

      System.out.println(returnString);

      // TODO 处理返回值,参见HTTP协议文档

      } catch (Exception e) {

      // TODO 处理异常

      e.printStackTrace();

      }

      }

      }

    3. 二、PHP语言文档

      a) 账户配置信息

      <?php

      /* *

       * 配置文件

       * 版本:1.2

       * 日期:2014-07-16

       * 说明:

       * 以下代码只是为了方便客户测试而提供的样例代码,客户可以根据自己网站的需要自行编写,并非一定要使用该代码。

       * 该代码仅供学习和研究接口使用,只是提供一个参考。

      */

      //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

      //创蓝发送短信接口URL, 如无必要,该参数可不用修改

      $chuanglan_config['api_send_url'] = 'http://222.73.117.158/msg/HttpBatchSendSM';

      //创蓝短信余额查询接口URL, 如无必要,该参数可不用修改

      $chuanglan_config['api_balance_query_url'] = 'http://222.73.117.158/msg/QueryBalance';

      //创蓝账号 替换成你自己的账号

      $chuanglan_config['api_account'] = 'jiekou-clcs-07';

      //创蓝密码 替换成你自己的密码

      $chuanglan_config['api_password'] = 'Clwh2009';

      //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

      ?>

    4. b) 短信接口

      <?php

      /* *

       * 类名:ChuanglanSmsApi

       * 功能:创蓝接口请求类

       * 详细:构造创蓝短信接口请求,获取远程HTTP数据

       * 版本:1.3

       * 日期:2014-07-16

       * 说明:

       * 以下代码只是为了方便客户测试而提供的样例代码,客户可以根据自己网站的需要,按照技术文档自行编写,并非一定要使用该代码。

       * 该代码仅供学习和研究创蓝接口使用,只是提供一个参考。

       */

      require_once("chuanglan_config.php");

      class ChuanglanSmsApi {

      /**

       * 发送短信

       *

       * @param string $mobile 手机号码

       * @param string $msg 短信内容

       * @param string $needstatus 是否需要状态报告

       * @param string $product 产品id,可选

       * @param string $extno   扩展码,可选

       */

      public function sendSMS( $mobile, $msg, $needstatus = 'false', $product = '', $extno = '') {

      global $chuanglan_config;

      //创蓝接口参数

      $postArr = array (

                'account' => $chuanglan_config['api_account'],

                'pswd' => $chuanglan_config['api_password'],

                'msg' => $msg,

                'mobile' => $mobile,

                'needstatus' => $needstatus,

                'product' => $product,

                'extno' => $extno

                           );

      $result = $this->curlPost( $chuanglan_config['api_send_url'] , $postArr);

      return $result;

      }

      /**

       * 查询额度

       *

       *  查询地址

       */

      public function queryBalance() {

      global $chuanglan_config;

      //查询参数

      $postArr = array ( 

                'account' => $chuanglan_config['api_account'],

                'pswd' => $chuanglan_config['api_password'],

      );

      $result = $this->curlPost($chuanglan_config['api_balance_query_url'], $postArr);

      return $result;

      }

      /**

       * 处理返回值

       * 

       */

      public function execResult($result){

      $result=preg_split("/[,\r\n]/",$result);

      return $result;

      }

      /**

       * 通过CURL发送HTTP请求

       * @param string $url  //请求URL

       * @param array $postFields //请求参数 

       * @return mixed

       */

      private function curlPost($url,$postFields){

      $postFields = http_build_query($postFields);

      $ch = curl_init ();

      curl_setopt ( $ch, CURLOPT_POST, 1 );

      curl_setopt ( $ch, CURLOPT_HEADER, 0 );

      curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

      curl_setopt ( $ch, CURLOPT_URL, $url );

      curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postFields );

      $result = curl_exec ( $ch );

      curl_close ( $ch );

      return $result;

      }

      //魔术获取

      public function __get($name){

      return $this->$name;

      }

      //魔术设置

      public function __set($name,$value){

      $this->$name=$value;

      }

      }

      ?>

    5. c) 平台示例

      <?php

      /* *

       * 功能:创蓝发送信息DEMO

       * 版本:1.3

       * 日期:2014-07-16

       * 说明:

       * 以下代码只是为了方便客户测试而提供的样例代码,客户可以根据自己网站的需要,按照技术文档自行编写,并非一定要使用该代码。

       * 该代码仅供学习和研究创蓝接口使用,只是提供一个参考。

       */

      require_once 'ChuanglanSmsHelper/ChuanglanSmsApi.php';

      $clapi  = new ChuanglanSmsApi();

      $result = $clapi->sendSMS('18516590414', '您好,您的验证码是888888','true');

      $result = $clapi->execResult($result);

      if($result[1]==0){

      echo '发送成功';

      }else{

      echo "发送失败{$result[1]}";

      }

      var_dump($result);

    6. 任何短信接口都是基于其相应语言开发的协议,所有用同种语言开发的程序都可以调用这个接口发送短信,通过其短信接口传递参数至创蓝短信的服务器,最终完成下发。其实短信接口测试之前,各位专业人士都明白,影响短信验证码速度和到达率的因素包含三个方面:

    7. 第一,机房的网络构架。IDG机房的质量参差不齐,从创蓝以往选择机房的经验来说,上海最好机房是目前我们所在的南汇机房。验证码是个持续不断的长期技术活,服务器的运转1分钟都不能断,如若服务商采用五星机房,配合BGP网络,自动识别用户提交短信的网络,再将移动号码分包到移动机房,再提交到移动网关,电信号码分包到电信机房,再提交到电信网关,这就解决了短信timeout的问题,保证验证码的到达率。同时,在多个重点城市进行中心机房布点,备份两条以上的链路,集群模式服务,防止任何时间的中断,保证验证码在任何一分钟都不会因为网络而出现延迟或者收不到。

    8. 第二,平台的发送机制的问题。若大家都是做App项目的,关于如何解决大批量延迟问题,都很好理解,对于事实发送创蓝采用:一,内存数据库技术,HASH散列存储,并采用二级索引进行快速排序,查找;二,在实时处理的信息时,按照大数概率和正态分布控制实时内存窗口,提高实时短信发送效率;第三,对于低优先级的数据,按照权重进行发送流速均衡分配;第四,短信流控采用令牌获取机制,做到原子操作,实现流速精确均衡控制。

    9. 第三,通道的带宽问题。10690时代,短信的通道资源非常珍贵。一家企业,注册资金1000万,只能申请1跟通道,并且从申请到能用的周期很长,超过2年。一根通道的流速上限是1000,也就是说一根通道每小时的发送量是360万,创蓝在单根通道上面的使用率控制在1/30,也就是一个通道,每个小时走的短信不会超过12万条,这样放的量越小,通道的压力越小。同时,为了保证验证码不断流,对每一位合作用户都采取双通道备份。这样以来,大大的提高了验证码的稳定性。

    10. 最后,由于端口的码号越短,质量越高,给用户使用的都是11位短码,也就是一个手机号的长度。降低了360等软件的拦截概率,也避免了各省运营商之间的相互屏蔽机制。从而在通道层面保证了短信的速度和成功率。



http://chatgpt.dhexx.cn/article/dXGbPAvy.shtml

相关文章

短信API接口

一、关于短信API接口 第三方短信服务商提供短信API接口&#xff0c;短信一般是编辑好内容&#xff0c;调用接口发送即可。我们这里提供一个注册好的账号&#xff0c;其中短信API服务器地址为&#xff1a; https://itdage.com/kkb/kkbsms 参数列表为&#xff1a; key&#xff1a…

阿里云的短信服务php接入笔记

公司要做用户手机号注册&#xff0c;所以要接入短信发送服务&#xff0c;刚开始接的是快递100的&#xff0c;都接好了&#xff0c;后来又说用阿里云的&#xff0c;怎么办&#xff0c;拿工资办事&#xff0c;领导们高兴就好 下面记录一下阿里云的短信平台的接入步骤&#xff0c…

阿里云短信接口-PHP

composer安装SDK&#xff1a; composer require alibabacloud/dysmsapi-20170525 2.0.22 也可以下载SDK包手动安装&#xff0c;下面是api接口文档&#xff1a;阿里云 OpenAPI 开发者门户 调用接口前&#xff0c;请申请短信签名和短信模板&#xff0c;并确保签名和模板已审核…

手把手教你php调用短信接口(smsapi)实现发送短信验证码

闪速码短信平台&#xff08;www.shansuma.com&#xff09;不仅支持个人、企业使用&#xff0c;还可以免费试用200条&#xff0c;所以本文使用闪速码平台提供的短信接口来演示&#xff0c;操作流程和阿里云、腾讯云一致&#xff0c;不再赘述。 文章目录 目录 前言 一、账号注…

Xmind 8 PRO 2018年8月最新版本直接安装免破解版本

XMind 是一款非常实用的商业思维导图软件&#xff0c;应用全球最先进的Eclipse RCP 软件架构&#xff0c;全力打造易用、高效的可视化思维软件&#xff0c;强调软件的可扩展、跨平台、稳定性和性能&#xff0c;致力于使用先进的软件技术帮助用户真正意义上提高生产率。 找了很…

XMind8破解版安装

1、官网下载新版xmind&#xff0c;下载链接&#xff08;选择zip格式&#xff09;&#xff1a; http://dl2.xmind.cn/xmind-8-update8-windows.zip 2、下载破解补丁&#xff0c;下载链接&#xff1a; https://stormxing.oss-cn-beijing.aliyuncs.com/files/XMindCrack.jar …

Xmind激活版双击文件无法打开的解决方案

声明&#xff1a;请大家支持正版&#xff01;此文仅作个人交流学习&#xff01; 很多小伙伴安装完Xmind后会发现双击无法打开文件&#xff0c;只能在应用界面打开&#xff0c;我在网上也看了很多解决方案&#xff0c;但是很多都是没用的&#xff0c;比如这个&#xff1a; 还有…

破解版xmind 8

1.先去官网下载对应的系统版本&#xff1a;https://www.xmind.cn/&#xff0c;网速贼慢 2.使用链接下载&#xff1a;https://pan.baidu.com/s/1pqjzEneTiW11w2tywaLWuA 提取码&#xff1a;2fet 3.包含xmind-8-update.exe XMindCrack.jar XMind序列号.txt 4.选择免费下载. 5…

思维导图软件XMind破解版下载地址 附最简安装教程

XMind XMind 是一款非常实用的商业思维导图软件&#xff0c;应用全球最先进的Eclipse RCP 软件架构&#xff0c;全力打造易用、高效的可视化思维软件&#xff0c;强调软件的可扩展、跨平台、稳定性和性能&#xff0c;致力于使用先进的软件技术帮助用户真正意义上提高生产率。 …

Xmind8 Pro破解版

思维导图又叫心智导图&#xff0c;是表达发散性思维的有效图形思维工具 &#xff0c;它简单却又很有效&#xff0c;是一种实用性的思维工具。思维导图运用图文并重的技巧&#xff0c;把各级主题的关系用相互隶属与相关的层级图表现出来&#xff0c;把主题关键词与图像、颜色等建…

Xmind 8 Pro破解版安装激活教程(Windows版)

废话不多说!!!直接上安装包链接 链接&#xff1a;https://pan.baidu.com/s/14qY_WBL0MTjri9Jv9E38NQ 密码&#xff1a;9on5 安装路径一定要记住&#xff08;最好别安装在C盘&#xff09; 如&#xff1a;E:\XMind&#xff08;根据需求自定义&#xff09;安装好之后&#xff0c;将…

xmind免费安装使用教程

一、简介 xmind 是一款功能强大的思维导图和脑图制作工具&#xff0c;它可以帮助用户将复杂的信息和想法以图形化的方式进行组织和展示&#xff0c;使得思维更加清晰和有条理。xmind 是一款跨平台的思维导图软件&#xff0c;支持 Windows、MacOS 和 Linux 系统。它提供了丰富的…

Xmind 8 pro 软件破解版(经济条件允许的情况下,请支持正版)

前言 Xmind是一款非常专业的思维导图软件&#xff0c;收费好几百元&#xff0c;不过还是很多用户&#xff0c;因为目前用的最多&#xff0c;也简单易用。XMind界面友好、功能优秀、可用性极强&#xff0c;从而数百万人选择了它&#xff0c;XMind不仅可以绘制思维导图&#xff…

Xmind2021绿色版,思维导图最佳软件

Xmind2021绿色版&#xff0c;思维导图最佳软件 序言 ​ 首先很抱歉拖更很久了&#xff0c;因为各种学术上和未来安排上的迷茫和困惑&#xff0c;导致我无心管理公众号&#xff0c;有一段时间没有为大家带来各类软件和经验分享&#xff0c;但是各位研究生小伙伴还是积极推荐CS…

linux版本的xmind怎么安装教程,linux安装xmind

下面给大家介绍linux安装xmind的方法&#xff0c;希望对需要的朋友有所帮助&#xff0c;更多Linux使用教程可直接访问Linux视频教程进行学习&#xff01; linux安装xmind 1.下载xmind 百度&#xff0c;官网下载xmind linux版本 2.解压到安装目录 我的安装目录是/opt/xmind-8-li…

Xmind 8 pro 软件破解版

Xmind是一款非常专业的思维导图软件&#xff0c;收费好几百元&#xff0c;不过还是很多用户&#xff0c;因为目前用的最多&#xff0c;也简单易用。XMind界面友好、功能优秀、可用性极强&#xff0c;从而数百万人选择了它&#xff0c;XMind不仅可以绘制思维导图&#xff0c;还能…

window下xmind-pro-8破解版

软件地址 &#xff1a;https://pan.baidu.com/s/1Y-wv7pypH-8yIyA1RXotfA 提取码: sy9j 激活xmind 找到 XMind 安装目录, 如: C:\Program Files (x86)\XMind&#xff0c;将下载的破解补丁复制到这个目录中。以文本格式打开安装目录中 XMind.ini在 XMind.ini 最后追加一个字段…

Mac xmind安装与破解版

注意&#xff1a;软件整个安装是断网安装&#xff0c;在偏好设置后&#xff0c;软件要退出程序&#xff0c;输入激活码的时候软件的程序是重新打开的。 下载链接&#xff1a;下载地址 密码&#xff1a;密码:xtme 1.XMind 8 pro Mac破解版(思维导图)&#xff1a;软件下载后打…

破解版XMind图文安装教程

自定义View系列教程00–推翻自己和过往&#xff0c;重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分…

XMind中文破解版

前言序锦 今天室友给我推荐了一个复习的好方法&#xff0c;用思维脑图来进行期末复习的串接&#xff0c;我们可以将书本或者PPT的结构和框架用思维脑图来进行勾画&#xff0c;然后来进行记忆性复习&#xff0c;在短时间复习时间内&#xff0c;这个方法应该比我现在就完全地书写…