C#对接中国移动短信接口

C#对接中国移动短信接口

中国移动短信接口(宣传一下)

移动短信平台地址: http://mas.10086.cn/login,输入用户名密码就可以登录了。
我们一般在使用的时候往往需要动态展示短信内容,或者加入自己项目链接,所以这边一定要联系你们的客服经理开通模板短信。
本博主也是联系以后开通的,
在这里插入图片描述

接下来就是新建模板跟审核了,一般情况下“适用规则”是可以满足要求的,如果不行的话,还得再找客服经理申请大字段(个人感觉还是比较麻烦的,毕竟走流程要花费时间嘛),新建完成就提交审核,审核完毕就获得模板ID了,第一步完成。 在这里插入图片描述
调用接口还需要其他参数,我们接着往下,主页-管理-接口管理-新建接口。本博主已经建好了,就直接给大家看一下,用户名密码自己设置,ip地址我设置的是我服务器的局域网ip(感觉这一项好像没什么用),其他的可以参考博主设置就行。完成后,记得把这个接口的签名下载下来,第二步完成。
在这里插入图片描述
上面的配置很简单,就是为调用接口服务的,小本本拿出来记录了哈,网址里面可以下载接口文档,博主是采用的HTTPS接口,首要任务就是拿到连接地址(博主是加了美女客服QQ要到的),再来看看报文内容(是不是都全了,哈哈)
在这里插入图片描述
准备工作完成,上C#代码了。本博主短信动态字段有点多,按照要求需要拼接,

 //发送短信,phoneList是需要发送的短信LIST
                    for (int i = 0; i < phoneList.Count; i++) { 
                        StringBuilder paramss = new StringBuilder();
                        paramss.Append('[');
                        paramss.Append('"' + GuestUserNameList[i] + '"' + ',');
                        paramss.Append('"' + bdateBegin.ToString("yyyy年MM月dd日HH:mm") + '"' + ',');//{[starttime:中文+英文+数字+符号,总长度50]}
                        paramss.Append('"' + bdateEnd.ToString("yyyy年MM月dd日HH:mm") + '"' + ',');
                        paramss.Append('"' + urldetail + '"' + ']');
                        bool b = xfService.sendsms(phoneList[i], paramss, "这里是模板ID 4aae25ed5ad370f58164");
                        if (b) {//记录发送短信
                            BaseEntity_Sms insertObj = new BaseEntity_Sms();
                            insertObj.PhoneNum = phoneList[i];
                            insertObj.CreateDate = dNow;
                            insertObj.SmsType = "访客";
                            ccms_business.insertSms(insertObj);
                        }
                    }
 /// <summary>
        /// 短信接口
        /// </summary>
        public bool sendsms(String mobiles, StringBuilder paramss, String templateId) {

            bool bRet = false;
            JObject jsonObj = new JObject();
            jsonObj.Add("ecName", "填短信平台的公司:南通最牛逼的有限公司");
            jsonObj.Add("apId", "attend");
            jsonObj.Add("templateId", templateId);
            jsonObj.Add("mobiles", mobiles);
            jsonObj.Add("params", paramss.ToString());
            jsonObj.Add("sign", "这里是短信接口签名pwa4T");
            jsonObj.Add("addSerial", "");

            StringBuilder sbFormatString = new StringBuilder();
            sbFormatString.Append("{0}{1}{2}{3}{4}{5}{6}");

            jsonObj.Add("mac", MD5Str.MD5Encrypt(String.Format(sbFormatString.ToString(), "填短信平台的公司:南通最牛逼的有限公司", "attend", "短信接口的密码!@#$",
                templateId, mobiles, paramss.ToString(), "这里是短信接口签名pwa4T", ""), new UTF8Encoding()));
//这边要注意base64加密,否则报错
            string _data = Base64Encode(Encoding.UTF8, jsonObj.ToString());
            JObject rejsonObj = null;
            try {
                String sResult = HttpWebRequestHelper.GetDatahttps(_data, "https://问客服MM要地址/sms/tmpsubmit");
                rejsonObj = JObject.Parse(sResult);
                Console.WriteLine(rejsonObj.ToString());
                if ("success".Equals(rejsonObj.GetValue("rspcod").ToString())) {
                    bRet = true;
                }
            }
            catch (Exception ex) {
                throw new Exception("XFRemoteService 接口调用:ERROR => " + ex.Message);
            }
            return bRet;
        }
//本博主取名有点恶趣味,别介意
public static string GetDatahttps(string JSONData, string Url) {
            byte[] bytes = Encoding.UTF8.GetBytes(JSONData);

            HttpWebRequest request = null;
            //HTTPSQ请求
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            request = WebRequest.Create(Url) as HttpWebRequest;
            request.ProtocolVersion = HttpVersion.Version11;
            request.Method = "POST";
            request.ContentType = "application/json";
            request.UserAgent = DefaultUserAgent;
            //request.
            Stream reqstream = request.GetRequestStream();
            reqstream.Write(bytes, 0, bytes.Length);

            //声明一个HttpWebRequest请求
            request.Timeout = 90000;
            //设置连接超时时间
            request.Headers.Set("Pragma", "no-cache");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream streamReceive = response.GetResponseStream();
            Encoding encoding = Encoding.UTF8;

            StreamReader streamReader = new StreamReader(streamReceive, encoding);
            string strResult = streamReader.ReadToEnd();
            streamReceive.Dispose();
            streamReader.Dispose();

            return strResult;

        }

然后就没有然后了,完成,测试中会遇到success但是无法收到短信的问题,一般都是自己参数有问题,可以联系客服MM查看报错原因,但是呢依然是收取短信费用的。。。。。比我还恶趣味。

以下是一个C#中的HTTP请求帮助类的例子: ```csharp using System; using System.IO; using System.Net; namespace HttpHelper { public class HttpWebRequestHelper { public static string HttpGet(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } public static string HttpPost(string url, string postData) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; byte[] data = System.Text.Encoding.UTF8.GetBytes(postData); request.ContentLength = data.Length; Stream stream = request.GetRequestStream(); stream.Write(data, 0, data.Length); stream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } } } ``` 使用方法: ```csharp string url = "http://www.example.com"; string result = HttpWebRequestHelper.HttpGet(url); Console.WriteLine(result); ``` ```csharp string url = "http://www.example.com"; string postData = "param1=value1&param2=value2"; string result = HttpWebRequestHelper.HttpPost(url, postData); Console.WriteLine(result); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值