首先我們需要去這里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(); } } }
