C#調用SMS短信接口,輕松搞定發送短信的任務。。。。


    首先我們需要去這里http://sms.webchinese.cn/申請一個賬號和短信接口秘鑰,在該網址下有許多語言的demo介紹,下面我主要為大家貼一個C#中的Helper類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Cryptography;
using System.Text;
using System.Net;
using System.IO;

namespace StudyProgram.LeiKu
{
    public class MessageHelper
    {
        private string url = @"http://utf8.api.smschinese.cn/";
        private string userid = "";
        private string key = "";//秘鑰
        private string smsMob;
        private string smsText;

        /// <summary>
        /// 帶參構造函數
        /// </summary>
        /// <param name="isMD5">是否需要MD5加密</param>
        /// <param name="userid">申請的用戶名</param>
        /// <param name="key">申請的秘鑰</param>
        /// <param name="mob">發送的手機(多個需要以','連接)</param>
        /// <param name="text">信息內容(注意簽名格式【XX網】)</param>
        public MessageHelper(bool isMD5, string userid, string key, string mob, string text)
        {
            this.userid = "/?Uid=" + userid;
            this.key = isMD5 ? "&KeyMD5=" + GetMD5Str(key) : "&Key=" + key;
            this.smsMob = "&smsMob=" + mob;
            this.smsText = "&smsText=" + text;
        }

        //MD5加密
        private string GetMD5Str(string str)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            StringBuilder sbStr = new StringBuilder();
            byte[] buffer = Encoding.Default.GetBytes(str);
            byte[] dataBuff = md5.ComputeHash(buffer);//計算指定字符數組的哈希值

            foreach (byte d in dataBuff)
                sbStr.Append(d.ToString("x2"));

            return (sbStr + "").ToUpper();
        }


        private string GetResponse()
        {
            var targetUrl = url + userid + key + smsMob + smsText;
            var res = "";
            try
            {
                HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targetUrl);
                hr.Method = "GET";
                hr.Timeout = 30 * 60 * 1000;//30分鍾超時
                WebResponse hs = hr.GetResponse();
                Stream sr = hs.GetResponseStream();
                StreamReader ser = new StreamReader(sr, Encoding.Default);
                res = ser.ReadToEnd();
            }
            catch (Exception ex)
            {
                res = ex.Message;
                throw ex;
            }
            return res;
        }

        private enum Result
        {
            沒有該用戶賬戶 = -1,
            接口密鑰不正確 = -2,
            MD5接口密鑰加密不正確 = -21,
            短信數量不足 = -3,
            該用戶被禁用 = -11,
            短信內容出現非法字符 = -14,
            手機號格式不正確 = -4,
            手機號碼為空 = -41,
            短信內容為空 = -42,
            短信簽名格式不正確 = -51,
            IP限制 = -6
        }

        public string GetSendStr()
        {
            var res = "";
            var response = GetResponse();
            if (response != "")
            {
                int temp;
                if (Int32.TryParse(response, out temp))
                {
                    if (temp > 0)
                        res = string.Format("{0}條信息發送成功", temp);
                    else
                        res = Enum.GetName(typeof(Result), temp);                    
                }
                else res = "發送失敗:" + response;
            }
            else res = "發送失敗";
            return res;
        }
       
    }
}

調用方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ShortMessage
{
    class Program
    {
        static void Main(string[] args)
        {
            StudyProgram.LeiKu.MessageHelper msh = new StudyProgram.LeiKu.MessageHelper(true, "申請用戶名", "申請的秘鑰", "1234567890", "驗證碼:無敵 【華哥】");
            var res = msh.GetSendStr();
            Console.WriteLine(res);
            Console.ReadLine();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM