通过移动的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

数据库连接失败

 

 

你可能感兴趣的:(接口)