通过移动的Mas接口发送短信

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

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

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

   

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

 

3. 实现代码如下:

 1     /// <summary>
 2     /// 移动公司的Mas短信接口
 3     /// </summary>
 4     public class MasSerVice
 5     {
 6         string userID = System.Configuration.ConfigurationManager.AppSettings["userID"].ToString();         //用户名
 7         string passWord = System.Configuration.ConfigurationManager.AppSettings["passWord"].ToString();     //密码
 8         string serviceID = System.Configuration.ConfigurationManager.AppSettings["ServiceID"].ToString();   //服务ID
 9         string postUrl = System.Configuration.ConfigurationManager.AppSettings["postUrl"].ToString();       //移动提供的Mas接口的Url
10 
11         /// <summary>
12         /// 准备发送的XML字符串
13         /// </summary>
14         /// <param name="userID"></param>
15         /// <param name="passWd"></param>
16         /// <param name="mobileNo">手机号码,如果有多个号码,号码之间按逗号隔开,不超过100个</param>
17         /// <param name="smsContent">短信内容</param>
18         /// <returns></returns>
19         public string PrepareXml(string MobileNo, string smsContent)
20         {
21             string str = String.Format("<?xml version=\"1.0\" encoding=\"GB2312\"?>" +
22                                             "<svc_init ver=\"2.0.0\">" +
23                                             "<sms ver=\"2.0.0\">" +
24                                             @"<client>
25                                             <id>{0}</id>
26                                             <pwd>{1}</pwd>
27                                             <serviceid>{2}</serviceid>
28                                             </client>
29                                             <sms_info>
30                                             <phone>{3}</phone>
31                                             <content>{4}</content>
32                                             </sms_info>
33                                             </sms>
34                                             </svc_init>", userID, passWord, serviceID, MobileNo, smsContent);
35 
36             return str;
37         }
38 
39         /// <summary>
40         /// 发送短信
41         /// </summary>
42         /// <param name="mobileNo">手机号码,如果有多个号码,号码之间按逗号隔开,不超过100个</param>
43         /// <param name="smsContent">短信内容</param>
44         /// <returns></returns>
45         public string MessageSend(string mobileNo, string smsContent)
46         {
47             string result = String.Empty;
48             string postString = PrepareXml(mobileNo.Replace('', ',').TrimEnd(new char[] { ',' }), smsContent);
49             try
50             {
51                 string DecodeString = postString.Replace(" ", "+");
52 
53                 byte[] data = System.Text.Encoding.GetEncoding("GBK").GetBytes(DecodeString);
54                 MSXML2.ServerXMLHTTP xmlhttp = new MSXML2.ServerXMLHTTP();
55 
56                 xmlhttp.open("POST", postUrl, false, null, null);
57                 xmlhttp.setRequestHeader("Content-Length", data.Length.ToString());
58                 xmlhttp.setRequestHeader("Content-Type", "text/xml;charset=gb2312");
59                 xmlhttp.send(data);
60                 xmlhttp.waitForResponse(1);
61 
62                 Byte[] b = (Byte[])xmlhttp.responseBody;    //返回数据
63 
64                 string backXml = System.Text.Encoding.GetEncoding("gb2312").GetString(b);
65 
66                 System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
67                 xmldoc.LoadXml(backXml);
68                 result = xmldoc.GetElementsByTagName("retcode")[0].InnerText;
69             }
70 
71             catch (Exception ex)
72             {
73                 result = ex.Message;
74             }
75             return result;
76         }
77     }
View Code

4. 调用接口:

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

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

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

 

retcode返回值

 说明

00

提交成功

01

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

26

超过短信最大发送量

25

手机号码格式有误

24

phone,content,sms_id标签内容为空

23

sms_info标签内容为空

22

账户认证失败

21

账号信息为空

12

client标签内容为空

11

提交的内容空

14

数据库连接失败

 

 

posted on 2013-11-22 14:56  nxgliming  阅读(2445)  评论(0编辑  收藏  举报

导航