简介:可以WEB服务方式通过服务平台向中国移动、中国联通、中国电信和中国网通用户实时或定时发送短消息。
安装实施:请和当地电信、移动部门联系。
限制说明:
1、所发的用户必须在白名单中,具体白名单由运营商维护。
2、发短信的数量有配额,比如发送600条,如果要提高需要向运营商联系,当然是要钱的。
短信发送
Webservices 名称 :SMServiceS
Webservices 地址 :http://0.0.0.0/ESB/services/SMServiceS?wsdl
方法定义:int sendSMXML(String SMInfo);
方法描述:发送短信,相同配置的短息可批量发送,每次发送最多不超过 600 条。请严格按照示例提供的 xml
<SM_INFOS>
<API_INFO key="" sysPort="" effectTime="" specialId="">
<SEND_INFO subcode="扩展码" priority="优先级,1-9,9最高,为空时默认5">*
<MOBILES>电话号码,多个以英文逗号分割</MOBILES>
<CONTENT>短信内容</CONTENT>
</SEND_INFO>
</API_INFO>
</SM_INFOS>
序号 节点或属性名 数据类型 说明
1 SM_INFOS 根节点
2 API_INFO API 信息
3 key String 鉴权令牌
4 sysPort String 是否使用系统端口 00:yes 是,no 否;默认 no
5 effectTime String 短信发送时间,格式为:YYYY-MM-DD hh:mm:ss,为空时即时
发送
6 specialId bigint 预留给用户自己使用的 id 关联,比如发送人 id,由用户自己使用,
系统不做干涉,可空
7 SEND_INFO 发送信息
8 subcode String 用户自定义子码,长度根据 SP 号而定,允许的最大长度为:20-sp
7 specialId bigint 预留给用户自己使用的 id 关联,比如发送人 id,由用户自己使用,
系统不做干涉,可空
8 SEND_INFO 发送信息
9 subcode String 用户自定义子码,长度根据 SP 号而定,允许的最大长度为:20-sp
号长度-扩展码长度-接口代码长度,可空
10 priority int 优先级,1-9,9 最高,为空时默认 5
11 MOBILES 电话号码,多个以英文逗号分割,不可空
12 CONTENT 发送内容,为避免特殊字符引起 xml 文档结构错误,推荐将内容包
含在<![CDATA[短信内容]]>中
返回值为 int 类型,参见短信接口返回值表。
C#版(注CMPP库由运营商提供,这里不便提供)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using CMPP;
namespace SMSend
{
/// <summary>
/// Send 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Send : System.Web.Services.WebService
{
[WebMethod]
public String SendMessage(string phonenumber, string content)
{
string[] phoneArr = null;
string resvalue = "";
string url = "http://10.1.1.1/ESB/services/SMService?wsdl";
int returnvalue = -1;
try
{
phoneArr = phonenumber.Split(',');
foreach (string s in phoneArr)
{
resvalue += s + ",";
}
if (resvalue.LastIndexOf(",") > 0)
{
resvalue = resvalue.Substring(0, resvalue.Length - 1);
}
string xml = "<SM_INFO><API_INFO key='' apiKey='' secondKey='' effectTime='' specialId=''>";
xml += "<SEND_INFO subcode=''><MOBILES>" + resvalue + "</MOBILES><CONTENT><![CDATA[" + content + "]]></CONTENT></SEND_INFO></API_INFO></SM_INFO>";
LimitCMPP cmpp = new LimitCMPP(url);
returnvalue= cmpp.sendSM(xml);
}
catch (Exception ex)
{
return ("短信发送出错:" + ex.Message);
}
return getresult(returnvalue);
}
String getresult(int value)
{
switch (value)
{
case 0:
return "成功";
case -100:
return "系统错误,操作失败";
case -101:
return "认证失败,token 错误或此 token 未激活";
case -102:
return "服务器集群配置有误,短信不能正常提交";
case -103:
return "服务已关闭:";
case -201:
return "参数格式错误";
case -202:
return "访问 IP 不在绑定列表";
case -203:
return "API 接口不存在";
case -204:
return "xml 格式错误";
case -205:
return "部分号码因错误不能正确提交";
case -301:
return "涉及的接口已被关闭";
default:
return "未知错误";
}
}
}
}
JAVA版本
try {
Service service = new Service();
Call call = (Call) service.createCall();
//拼接参数
String si = "<SM_INFO><API_INFO key=\"" sysPort=\"no\" effectTime=\"\" specialId=\"\">" +
"<SEND_INFO subcode=\"\" priority=\"5\"><MOBILES>电话号码</MOBILES><CONTENT><![CDATA[短信内容]]></CONTENT></SEND_INFO></API_INFO></SM_INFO>";
//设置调用方法
call.setOperationName("sendSM");
//设置调用地址
call.setTargetEndpointAddress(new java.net.URL("http://127.0.0.1/ESB/services/SMServiceS?wsdl"));
//设置参数名和参数类型
call.addParameter(new QName("SMInfo"),org.apache.axis.encoding.XMLType.SOAP_STRING,javax.xml.rpc.ParameterMode.IN);
//设置返回值类型
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_INT);
//执行调用
int response = (Integer)call.invoke(new Object[] {si});
//打印返回值
System.out.println("-----" + response);
} catch (Exception e) {
e.printStackTrace();
}
/*
使用axis1.4
所使用的包
activation.jar
axis-ant.jar
axis.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
mail.jar
saaj.jar
tools.jar
wsdl4j-1.5.1.jar
*/
xmlsec.jar