通过移动的Mas接口发送短信
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接口发送短信的更多相关文章
- 企业短信通 C# HTTP接口 发送短信
/* 功能: 企业短信通 C# HTTP接口 发送短信 修改日期: 2014-09-01 说明: http://api.cnsms.cn/?ac=send&uid=用户账号&pwd=M ...
- android 中调用接口发送短信
android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...
- 注册登录页面修订-Python使用redis-手机验证接口-发送短信验证
登录页面修订 views.Login.vue <template> <div class="login box"> <img src="@/ ...
- JAVA 调用第三方短信平台接口发送短信
做了几个调用三方短信平台发送短信的例子,大部分需要 携带参数,向指定URL发送请求 回顾对接第一个平台时痛苦的乱码经历,这里放一份代码,算是个模版,再用到的时候过来copy一下就OK. 在进入主题之前 ...
- zabbix3调用接口发送短信告警
一.需求 之前使用的邮件告警,由于经常会忽略邮件,所以有时候告警查看的并不及时,所以增加短信告警的,以便及时处理. 二.zabbix-server端的配置 # 需要在zabbix-server端打开A ...
- java 调用短信 api 接口发送短信
参考: https://blog.csdn.net/u014793522/article/details/59062014 参考 :https://blog.csdn.net/Lu_shilusi ...
- 如何使用微信小程序云函数发送短信验证码
其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 本文使用的是榛子云短信平台(http://smsow.zhenzikj.com) ,S ...
- Java发送短信
1.接口使用介绍 发送短信肯定需要使用第三方接口,Java本身是肯定不能直接发送短信的.第三方接口有很多,这里直接找个正规靠谱一点的学习一下 这里使用了中国网建(http://sms.webchine ...
- 发送短信——java
闲来无事研究一下调用第三方接口发送短信的技术 这一次我们使用阿里的短信服务 一.进行平台相关服务的注册和设置 下面请参照阿里的短信服务文档进行设置,只要按照文档步骤来差不多30分钟就能搞定服务注册: ...
随机推荐
- J2EE中文乱码处理
在JAVA WEB开发的过程中,经常会遇到中文乱码的情况,中文乱码主要是在浏览器与服务器交互传递数据的时候发生的.对于这个棘手的问题,我参考(韩顺平老师)视频将处理方法总结与此,供自己以及大家开发的时 ...
- wpf 制作播放视频的屏保程序、而且能分屏显示
这个程序用到了WPF里 “visual_Brush”(主要是为了实现分屏显示) , “UserControl” ,这两个知识点: 在屏保状态下播放指定文件夹下的视频,而且能分屏显示: 把编译好的屏保 ...
- Error is 10055 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
今天上午,一个同事反映:某系统的某个通过socket来进行通信的服务无法连接上数据库里,在操作系统上用数据库的客户端测试数据库连接也出现这样的错误信息:Error is 10055 由于系统缓冲区空间 ...
- Mac下安装Redis图解教程
去redis官网(http://redis.io/download)自行下载安装包解压缩到本地文件夹,比如放在Mac应用程序文件夹(/Applications/),在终端进入redis文件夹. 需要进 ...
- 在一个工程管理多个应用-b
Demo:http://download.csdn.net/detail/u012881779/9166527 本文的产生是因产品经理提出的特殊需求: 一个针对多所学校的应用,对不同学校需要分别使用一 ...
- php实现调用微信上传照片然后保存至服务器与数据库
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <s ...
- linux驱动系列之挂载(转)
转自网页:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html http://www.linuxso.com/command/c ...
- tcpprep 对IPV6的支持
在采用tcpreplay对包实施回放前,需要对包执行预处理,tcpprep就是完成这个任务的.tcpprep要做的处理就是生成一个cache文件,根据tcpprep wiki的介绍http://tcp ...
- 1187: [HNOI2007]神奇游乐园 - BZOJ
Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一个游乐场,专为旅途中疲惫的人设计. ...
- 在smarty模板中嵌入php代码
我个人并不太喜欢smarty的语法,写起来比较啰嗦易出现匹配出错,但是旧项目中有许多工程都是采用它作模板.最近需要在此上稍微加一些PHP的内容,但我不想在模板控制层去一个一个assign,而想在模板文 ...