【转+修改】容联云通讯api调用短信发送调用
转自 https://my.oschina.net/u/1995134/blog/814540
需要荣联云通讯 的 相对应SDKjar包。
CCP_REST_SMS_SDK_JAVA_v2.6.3r.jar
调用测试在main方法里:
  public static void main(String[] args){
        ResponseObj obj =   FhPhoneMassageSender.testSender("176****5720","呵呵"); -- 手机号码及内容
        System.out.println(obj.getResultMsg());
    }
上代码:
import java.util.HashMap;
import java.util.Set; import com.cloopen.rest.sdk.CCPRestSmsSDK;public class FhPhoneMassageSender {
private static String sms_ytx_url="appsms.cloopen.com";
private static String sms_ytx_port="8883";
private static String sms_ytx_sid="*****************ff2dea1de4a6f";
private static String sms_ytx_token="fa9b5d*************2457508977";
private static String sms_ytx_appid="aaf98f89544cd9d9015475b429082343";
private static String sms_ytx_valid_min="5";
private static String sms_ytx_tempid="8****40";
/**
* <p class="detail">
* 功能:容联云通讯-发送短信
* </p>
* @author liuwh
* @date 2016-1-22
* @param tel 手机号码,多个用,分隔
* @param verifyCode 验证码
* @return
*/
public static ResponseObj sendRegCodeByYTX(String tel, String verifyCode,String verifyName){ ResponseObj obj = new ResponseObj(true, "操作成功");
HashMap<String, Object> result = null;
//初始化SDK
CCPRestSmsSDK restAPI = new CCPRestSmsSDK(); restAPI.init(Global.getConfig("sms_ytx_url"), Global.getConfig("sms_ytx_port")); restAPI.setAccount(Global.getConfig("sms_ytx_sid"), Global.getConfig("sms_ytx_token"));//账号、密码 restAPI.setAppId(Global.getConfig("sms_ytx_appid"));//应用ID String smsValidMin=Global.getConfig("sms_ytx_valid_min"); //验证码过期时间
if(StringUtils.isEmpty(smsValidMin)){
smsValidMin="5";
}
result = restAPI.sendTemplateSMS(tel, Global.getConfig("sms_ytx_tempid"),new String[]{verifyName,verifyCode, smsValidMin}); System.out.println("SDKTestGetSubAccounts result=" + result);
if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
obj.setSuccessful(false);
obj.setResultMsg(String.valueOf(result.get("statusMsg")));
}
return obj;
} /**
* <p class="detail">
* 功能:容联云通讯-发送催款信息
* </p>
* @author liuwh
* @date 2016-1-22
* @param tel 手机号码,多个用,分隔
* @param verifyName 参数值(多个替换坑)
* @return
*/
public static ResponseObj sendPressMoneyByYTX(String tel,String... verifyName){ ResponseObj obj = new ResponseObj(true, "操作成功");
HashMap<String, Object> result = null;
//初始化SDK
CCPRestSmsSDK restAPI = new CCPRestSmsSDK(); restAPI.init(sms_ytx_url, sms_ytx_port); restAPI.setAccount(Global.getConfig("sms_ytx_sid"), Global.getConfig("sms_ytx_token"));//账号、密码 restAPI.setAppId(Global.getConfig("sms_ytx_appid"));//应用ID result = restAPI.sendTemplateSMS(tel, Global.getConfig("sms_ytx_press_tempid"), verifyName); if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
obj.setSuccessful(false);
obj.setResultMsg(String.valueOf(result.get("statusMsg")));
}
return obj;
}
public static ResponseObj testSender(String tel,String... verifyName){
ResponseObj obj = new ResponseObj(true, "操作成功");
HashMap<String, Object> result = null;
//初始化SDK
CCPRestSmsSDK restAPI = new CCPRestSmsSDK(); restAPI.init(sms_ytx_url,sms_ytx_port); restAPI.setAccount(sms_ytx_sid, sms_ytx_token);//账号、密码 restAPI.setAppId(sms_ytx_appid);//应用ID result = restAPI.sendTemplateSMS(tel, sms_ytx_tempid, verifyName); if("000000".equals(result.get("statusCode"))){
//正常返回输出data包体信息(map)
HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
Set<String> keySet = data.keySet();
for(String key:keySet){
Object object = data.get(key);
System.out.println(key +" = "+object);
}
}else{
//异常返回输出错误码和错误信息
System.out.println("错误码=" + result.get("statusCode") +" 错误信息= "+result.get("statusMsg"));
obj.setSuccessful(false);
obj.setResultMsg(String.valueOf(result.get("statusMsg")));
}
return obj;
}
public static void main(String[] args){
ResponseObj obj = FhPhoneMassageSender.testSender("176****5720","呵呵");
System.out.println(obj.getResultMsg());
}
}
Global 是用来获取配置文件内容的。实际开发中可以像测试代码中那样把api需要的配置信息直接写在静态变量中。
ResponseObj 是自己封装的返回数据的类型:
package com.thinkgem.jeesite.common.utils; /**
* Created by antis on 2017/6/27.
*/
public class ResponseObj {
/**
* 总记录数
*/
private int total;
/**
* 当前记录集合
*/
private Object data;
/**
* 是否成功
*/
private boolean successful;
/**
* 结果消息
*/
private String resultMsg;
/**
* 错误类型
*/
private String type;
/**
* 添加数据
* @param data
* @return
*/
public static ResponseObj successResult(Object data) {
return new ResponseObj(1,data,true, "", "");
}
/**
* 添加数据
* @param data
* @return
*/
public static ResponseObj successResult(Object data,int total) {
return new ResponseObj(total,data,true, "", "");
}
/**
* 返回失败信息
* @param exMessage
* @return
*/
public static ResponseObj failedResult(String exMessage) {
return new ResponseObj(0, "", false,exMessage, "error");
}
/**
* 返回失败信息和类型
* @param exMessage
* @param type
* @return
*/
public static ResponseObj failedResult(String exMessage, String type) {
return new ResponseObj(0, "",false, exMessage, type);
}
/**
* 构造函数,类型为error
*
*/
public ResponseObj() {
type = "error";
}
public ResponseObj(boolean successful,String resultMsg){
this.successful = successful;
this.resultMsg = resultMsg;
}
public ResponseObj(int total, Object data, boolean successful,String resultMsg, String type) {
this.total = total;
this.data = data;
this.successful = successful;
this.resultMsg = resultMsg;
this.type = type;
}
/**
* @return the 总记录数
*/
public int getTotal() {
return total;
}
/**
* @param total 总记录数 the total to set
*/
public void setTotal(int total) {
this.total = total;
}
/**
* @return the 是否成功
*/
public boolean isSuccessful() {
return successful;
} /**
* @param successful 是否成功
* the successful to set
*/
public void setSuccessful(boolean successful) {
this.successful = successful;
} /**
* @return the data
*/
public Object getData() {
return data;
}
/**
* @param data the data to set
*/
public void setData(Object data) {
this.data = data;
}
/**
* @return the 结果消息
*/
public String getResultMsg() {
return resultMsg;
} /**
* @param resultMsg 结果消息
* the resultMsg to set
*/
public void setResultMsg(String resultMsg) {
this.resultMsg = resultMsg;
} /**
* @return the 错误类型
*/
public String getType() {
return type;
} /**
* @param type 错误类型
* the type to set
*/
public void setType(String type) {
this.type = type;
}
}
解释一下api需要的各个参数
private static String sms_ytx_url="appsms.cloopen.com"; --容联的appsms的url是固定不变的
private static String sms_ytx_port="8883"; --端口号,应该也是不变的
private static String sms_ytx_sid="*****************ff2dea1de4a6f"; --容联主账户的ACCOUNT SID
private static String sms_ytx_token="fa9b5d*************2457508977"; --容联主账户的AUTH TOKEN
private static String sms_ytx_appid="aaf98f89544cd9d9015475b429082343"; --正在开发的应用的 APP ID
private static String sms_ytx_valid_min="5"; --验证码有效时间 可以自己设置,分钟为单位
private static String sms_ytx_tempid="8****40"; --短信模板ID


【转+修改】容联云通讯api调用短信发送调用的更多相关文章
- python-在python3中使用容联云通讯发送短信验证码
		容联云通讯是第三方平台,能够提供短信验证码和语音通信等功能,这里只测试使用短信验证码的功能,因此只需完成注册登录(无需实名认证等)即可使用其短信验证码免费测试服务,不过免费测试服务只能给控制台中指定的 ... 
- 容联云通讯_提供网络通话、视频通话、视频会议、云呼叫中心、IM等融合通讯能力开放平台。
		容联云通讯_提供网络通话.视频通话.视频会议.云呼叫中心.IM等融合通讯能力开放平台. undefined 
- Luffy之注册认证(容联云通讯短信验证)
		用户的注册认证 前端显示注册页面并调整首页头部和登陆页面的注册按钮的链接. 注册页面Register,主要是通过登录页面进行改成而成. 先构造前端页面 <template> <div ... 
- mevan引入容联云通讯jar
		首先从官网下载jar 然后拷贝到lib目录下 最后在pom.xml中这样写 <dependency> <groupId>cn.com</groupId> <a ... 
- .Net语言 APP开发平台——Smobiler学习日志:如何调用API进行短信发送
		最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 二.发送短信代码 VB: Pr ... 
- Java版阿里云通信短信发送API接口实例(新)
		阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等. 完美支撑双11期间2亿用户,发送6亿短信 ... 
- asp.net mvc短信接口调用——阿里大于API开发心得
		互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短 ... 
- 阿里云短信服务调用例子-Python
		阿里云短信服务调用例子 阿里云官方文档https://helpcdn.aliyun.com/document_detail/101893.html 首先需要安装阿里云PythonSDK(下面是pyth ... 
- 短信接口调用以及ajax发送短信接口实现以及前端样式
		我们短信api用的是云信使平台提供的非免费短信服务:官网提供的demo有两种,分别是function加其调用.class文件加其调用. 在这里我们用class文件加调用: 首先,ThinkPHP里面自 ... 
随机推荐
- [转]Web API OData V4 Keys, Composite Keys and Functions Part 11
			本文转自:https://damienbod.com/2014/09/12/web-api-odata-v4-keys-composite-keys-and-functions-part-11/ We ... 
- php中的namespace 命名空间
			名字解释: namespace(命名空间),命名空间是从php5.3开始支持的功能.作用主要有两个:1.可以避免类名取得过长.2.当在多个框架配合使用时,同名的类之间不会冲突. 命名空间,看名字就知道 ... 
- 过滤网址和输入框中的特殊字符,防止sql注入
			using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ... 
- 程序员必备技能:代码审查 (Google牛人谈Code Review)
			在上一篇博客里我暗示自己将不在为Google工作. 我还没有决定好去哪儿-有几个非常不错的工作机会让我选择.鉴于这段时间内我不受雇于任何公司,我想我可以写点和专业相关的东西,这些东西很有趣,但是如果我 ... 
- 三、curator recipes之共享的可重入读写锁
			简介 curator实现了跨JVM的可重入读写互斥锁.它使用zookeeper去进行加锁,所以指定相同路径的处理线程将会基于“公平锁”的机制去竞争锁资源. 读写锁包含了读锁.写锁两个,它们的互斥关系如 ... 
- groovy闭包科里化参数
			科里化闭包:带有预先绑定形参的闭包.在预先绑定一个形参之后,调用闭包时就不必为这个形参提供实参了.有助于去掉方法调用中的冗余重复. 使用curry方法科里化任意多个参数 使用rcurry方法科里化后面 ... 
- LeetCode GrayCode
			class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(); ... 
- ES6学习笔记(二)-字符串的扩展
			一.字符的 Unicode 表示法 JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点. 表示法只限于码点在\u0000~\uFFFF之间的字符, ... 
- 前端把html表格生成为excel表格
			最近公司改后台管理系统.要求导出台账项目等等为excel表格,找半天还真有,他是通过query.table2excel.js 实现,原谅我原生不会弄这个当然大家有可以给我留言. <!DOCTYP ... 
- html5 移动端开发
			移动端开发总结 目录 1.手机与浏览器 2.Viewport(视窗) 3. 媒体查询 4.px,em,rem,pt 5.设备像素比devicePixelRatio 6.移动web中的图标及字体 ... 
 
			
		