C#如何编写短信接口,以及接口的调用,包括C#.net访问web,并处理返回值的简例。

在系统的开发中我们经常会用到接口,下面给大家介绍一种短信接口的编写与调用。

我们常调用接口来完成一些信息的通知或者发送验证码,那么这些操作是如何完成的呢?来看一下详细的介绍吧!

首先呢,我们需要有一个短信的接口地址这个需要从短信接口提供商哪里购买,附带着接口文档,里面有接口地址与详细的函数,参数等说明。

然后我们就可以编写接口啦!

一、先定义一个静态的方法,返回值为字符串类型,给两个参数(短信内容,发送的手机号)。

  1.定义一个存放密码的变量“pwd”,使用MD5进行加密一下。

  2.定义一个存放账号的变量“regcode”,给变量赋值。

  3.定义一个临时存放内容的变量“temp”,转换一下短信内容的编码格式,防止乱码,最后在给内容_mesg赋值。

  4.定义一个存放路径的变量“url”,将接口路径等变量拼接起来,按照接口文档的格式为准。

  5.请求HTTP协议,发送请求,获取结果。

     private static string ChannelA(string _mesg, string _phone)
        {
            string pwd = FormsAuthentication.HashPasswordForStoringInConfigFile("指定密码", "MD5").ToLower();
            string regcode = "短信账号";
       _mesg = "【***】" + _mesg;//可自行给内容添加前缀 string temp = string.Empty; //创建变量 存放短信内容 byte[] encodedBytes = Encoding.GetEncoding("gbk").GetBytes(_mesg); foreach (byte b in encodedBytes) { temp += "%" + b.ToString("X"); } _mesg = temp; string url = string.Empty; url = "http://********=" + regcode + "&pwd=" + pwd + "&phone=" + _phone + "&CONTENT=" + _mesg + "&extnum=&level=1&schtime=null&reportflag=1&url
=&smstype=0&key=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);//创建一个请求示例 HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();//获取响应,即发送请求 Stream stream = webreponse.GetResponseStream();//获得流 try { byte[] rsByte = new Byte[webreponse.ContentLength];//字节数组,存放流里面的数据
stream.Read(rsByte, 0, (int)webreponse.ContentLength);//读取数据流的长度
string str = System.Text.Encoding.UTF8.GetString(rsByte, 0, rsByte.Length).ToString();//结果 return "SUCCESS";//返回结果 } catch (Exception ex) { return "ERR|" + ex.Message; } }

二、短信发送之前的一个判断,有需要的朋友可以参考一下。

  1.同样两个参数,短信内容与需要发送的手机号。

  2.获取一小时之内的时间。

  3.连接你的数据库。

  4.获取到你这一个小时内发送短信的总条数,判断条数是否在你设定的数量之内,给个返回值 短信提示。

  5.取IP,与你这一个小时内给这个IP发送短信的总条数,判断条数是否在你设定的数量之内,给个返回值 短信提示。

  6.获取你这一个小时内给同一个手机号发送短信的总条数,判断条数是否在你设定的数量之内,给个返回值 短信提示。

  7.定义变量“RsltA”,调用接口方法。

  8.返回“RsltA”。

    public static string SendMsg(string _mesg, string _phone)
        {
            DateTime DtLmtAll = DateTime.Now.AddHours(-1);
            dbebmEntities DB = new dbebmEntities();
            int Lmt = DB.Call_ToothMessage.Where(a => a.SendTime > DtLmtAll).Count(); //一小时内发短信的总条数
            if (Lmt > 1000 && Lmt < 1005)
            {
                string Rslt1 =ChannelA("本小时内已发够1000条短信,请查询发送详情", "手机号");
return "短信通道暂繁忙,请稍候再试"; } if (Lmt > 1005) { return "短信通道暂繁忙,请稍候再试"; } DateTime DtLmtIP = DateTime.Now.AddHours(-1); string IPAddress = System.Web.HttpContext.Current.Request.UserHostAddress; if (DB.Call_ToothMessage.Where(a => a.IPAddress == IPAddress && a.SendTime > DtLmtIP).Count() >= 50) return "同一IP地址每小时最多接收50条短信哦~"; DateTime DtLmtPhone = DateTime.Now.AddDays(-1); if (DB.Call_ToothMessage.Where(a => a.PhoneNum == _phone && a.SendTime > DtLmtPhone).Count() >= 20) return "同一手机号每天最多接收20条短信哦~"; string RsltA = ChannelA(_mesg, _phone); Call_ToothMessage Msg = new Call_ToothMessage(); Msg.TothContent = _mesg; Msg.SendTime = DateTime.Now; Msg.CreateTime = DateTime.Now; Msg.PhoneNum = _phone; Msg.IPAddress = IPAddress; Msg.CfmType = 0; DB.Call_ToothMessage.Add(Msg); DB.SaveChanges(); return RsltA; }

  最后如果你需要第二个方法判断发送条数,就在需要接口的地方调用第二个方法的名称就好啦,如果不需要判断那么直接调接口的方法吧!

  详细步奏已经讲解完了,你看懂了吗?

  欢迎提问哦!

原文地址:https://www.cnblogs.com/liuyi-li/p/6339800.html