C#和JAVA调用短信接口发短信实例

  简介:可以WEB服务方式通过服务平台向中国移动、中国联通、中国电信和中国网通用户实时或定时发送短消息。

  安装实施:请和当地电信、移动部门联系。

  

  限制说明:

  1、所发的用户必须在白名单中,具体白名单由运营商维护。

  2、发短信的数量有配额,比如发送600条,如果要提高需要向运营商联系,当然是要钱的。

短信发送 

Webservices  名称  :SMServiceS 
Webservices  地址  :http://0.0.0.0/ESB/services/SMServiceS?wsdl 
方法定义:int sendSMXML(String SMInfo); 
方法描述:发送短信,相同配置的短息可批量发送,每次发送最多不超过 600 条。请严格按照示例提供的 xml

SMInfo:xml 格式字符串,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[短信内容]]>中 


1.1.2   返回值解释 
返回值为 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



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值