1. 首先,需要移动公司提供的用户名、密码、服务ID、接口Url等信息。

2. 将短信信息整理成XML格式的字符串,再转为byte数组,通过POST的方式,将短信发往Mas接口。需要引用"MSXML2"组件。

注意:发往Mas接口的byte数组的编码方式需要设置为"GBK",否则收到的短信将会是乱码。

byte[] data = System.Text.Encoding.GetEncoding("GBK").GetBytes(DecodeString);

3. 实现代码如下:

     /// <summary>
/// 移动公司的Mas短信接口
/// </summary>
public class MasSerVice
{
string userID = System.Configuration.ConfigurationManager.AppSettings["userID"].ToString(); //用户名
string passWord = System.Configuration.ConfigurationManager.AppSettings["passWord"].ToString(); //密码
string serviceID = System.Configuration.ConfigurationManager.AppSettings["ServiceID"].ToString(); //服务ID
string postUrl = System.Configuration.ConfigurationManager.AppSettings["postUrl"].ToString(); //移动提供的Mas接口的Url /// <summary>
/// 准备发送的XML字符串
/// </summary>
/// <param name="userID"></param>
/// <param name="passWd"></param>
/// <param name="mobileNo">手机号码,如果有多个号码,号码之间按逗号隔开,不超过100个</param>
/// <param name="smsContent">短信内容</param>
/// <returns></returns>
public string PrepareXml(string MobileNo, string smsContent)
{
string str = String.Format("<?xml version=\"1.0\" encoding=\"GB2312\"?>" +
"<svc_init ver=\"2.0.0\">" +
"<sms ver=\"2.0.0\">" +
@"<client>
<id>{0}</id>
<pwd>{1}</pwd>
<serviceid>{2}</serviceid>
</client>
<sms_info>
<phone>{3}</phone>
<content>{4}</content>
</sms_info>
</sms>
</svc_init>", userID, passWord, serviceID, MobileNo, smsContent); return str;
} /// <summary>
/// 发送短信
/// </summary>
/// <param name="mobileNo">手机号码,如果有多个号码,号码之间按逗号隔开,不超过100个</param>
/// <param name="smsContent">短信内容</param>
/// <returns></returns>
public string MessageSend(string mobileNo, string smsContent)
{
string result = String.Empty;
string postString = PrepareXml(mobileNo.Replace(',', ',').TrimEnd(new char[] { ',' }), smsContent);
try
{
string DecodeString = postString.Replace(" ", "+"); byte[] data = System.Text.Encoding.GetEncoding("GBK").GetBytes(DecodeString);
MSXML2.ServerXMLHTTP xmlhttp = new MSXML2.ServerXMLHTTP(); xmlhttp.open("POST", postUrl, false, null, null);
xmlhttp.setRequestHeader("Content-Length", data.Length.ToString());
xmlhttp.setRequestHeader("Content-Type", "text/xml;charset=gb2312");
xmlhttp.send(data);
xmlhttp.waitForResponse(); Byte[] b = (Byte[])xmlhttp.responseBody; //返回数据 string backXml = System.Text.Encoding.GetEncoding("gb2312").GetString(b); System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
xmldoc.LoadXml(backXml);
result = xmldoc.GetElementsByTagName("retcode")[].InnerText;
} catch (Exception ex)
{
result = ex.Message;
}
return result;
}
}

4. 调用接口:

new MasService().MessageSend("", "短信内容……");

如果返回的值为"00",即表示短信已经发送成功。

附:retmesg为返回代码说明信息

retcode返回值

说明

00

提交成功

01

手机号码数量和sms_id数量不匹配

26

超过短信最大发送量

25

手机号码格式有误

24

phone,content,sms_id标签内容为空

23

sms_info标签内容为空

22

账户认证失败

21

账号信息为空

12

client标签内容为空

11

提交的内容空

14

数据库连接失败

通过移动的Mas接口发送短信的更多相关文章

  1. 企业短信通 C# HTTP接口 发送短信

    /* 功能: 企业短信通 C# HTTP接口 发送短信 修改日期: 2014-09-01 说明: http://api.cnsms.cn/?ac=send&uid=用户账号&pwd=M ...

  2. android 中调用接口发送短信

    android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...

  3. 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证

    登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...

  4. JAVA 调用第三方短信平台接口发送短信

    做了几个调用三方短信平台发送短信的例子,大部分需要 携带参数,向指定URL发送请求 回顾对接第一个平台时痛苦的乱码经历,这里放一份代码,算是个模版,再用到的时候过来copy一下就OK. 在进入主题之前 ...

  5. zabbix3调用接口发送短信告警

    一.需求 之前使用的邮件告警,由于经常会忽略邮件,所以有时候告警查看的并不及时,所以增加短信告警的,以便及时处理. 二.zabbix-server端的配置 # 需要在zabbix-server端打开A ...

  6. java 调用短信 api 接口发送短信

    参考:   https://blog.csdn.net/u014793522/article/details/59062014 参考 :https://blog.csdn.net/Lu_shilusi ...

  7. 如何使用微信小程序云函数发送短信验证码

    其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 本文使用的是榛子云短信平台(http://smsow.zhenzikj.com) ,S ...

  8. Java发送短信

    1.接口使用介绍 发送短信肯定需要使用第三方接口,Java本身是肯定不能直接发送短信的.第三方接口有很多,这里直接找个正规靠谱一点的学习一下 这里使用了中国网建(http://sms.webchine ...

  9. 发送短信——java

    闲来无事研究一下调用第三方接口发送短信的技术 这一次我们使用阿里的短信服务 一.进行平台相关服务的注册和设置 下面请参照阿里的短信服务文档进行设置,只要按照文档步骤来差不多30分钟就能搞定服务注册: ...

随机推荐

  1. PHP学习之环境搭建

    计算机环境 win7  64位 搭建  apache-httpd-2.2-win64  +  php-5.3.6-Win32-VC9-x64  +MySQL_5.5.13_winx64开发环境 参考: ...

  2. DISCUZ! X2.5设置仅允许QQ登录注册论坛 加固会员注册机制

    论坛稍微有点起色之后,很多站长就会担心论坛经常被人恶意灌水.注册机.顶贴机等等一些列非法的手段.通常站长都会通过一些后台的设置和插件等等一 切有效的方法预防,但更多的站长会通过限制用户注册会员,需注册 ...

  3. (转载)直接用SQL语句把DBF导入SQLServer

    告诉大家一个直接用SQL语句把DBF导入SQLServer,以及txt导入Access的方法,大家抛弃BatchMove吧来自:碧血剑告诉你一个最快的方法,用SQLServer连接DBF在SQLSer ...

  4. Python-Day1 Python基础学习

    一.Python3.5.X安装 1.Windows Windows上找度娘搜索“Python for windows下载”就OK了,安装的时候可以勾选设置环境变量,也可以安装完手动设置,这样在cmd中 ...

  5. Ubuntu 14.04的SWAP 为0

    [@@@@@@]# free total used free shared buffers cached Mem: 1024976 248992 775984 0 16820 73128 -/+ bu ...

  6. Perl中的特殊内置变量详解

    #!/usr/bin/perl -w @array = qw(a b c d); foreach (@array) { print $_," "; } 例子的作用就是定义一个数组并 ...

  7. 关于对db_block_gets的理解与实验

    实验 一. 自己手动创建的小表 创建一个区大小为  40k  SYS@ORCL>show parameter db_block_size NAME                         ...

  8. 模式对话框里的CheckedChanged事件

    问题:   模式对话框里的CheckedChanged事件不被触发: 解决方法: 一.先不直接showModalDialog出要的页面,而是要放一个中单页面 window.showModalDialo ...

  9. 【通信】Netty JBOSS提供的一个java开源框架

    Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序dsf. 也就是说,Netty 是一个基 ...

  10. easy ui 下拉框绑定数据select控件

    easy ui 中的下拉框控件叫做select,具体代码如下: html代码:①.这是一个公司等级的下拉框 <tr> <td>公司等级:</td> <td&g ...