[C#.NET][SMS] 調用 摩叮簡訊 MoDing Web Service 發送單向簡訊 - 使用 Html Unicode
摩叮簡訊,註冊完之後,就會免費領到 10 點,API手冊也必須要寫信去申請,若點數不夠用開發測試使用的話,可以發信再去申請。
調用方式跟前面幾篇介紹的一樣
跟之前比較不一樣的地方,它是用 Html Unicode 發送,Html Unicode 中每一個字的組成方式為 『&#』+『XXXX』+『;』
『&#』:開始
『XXXX』:內容編碼
『;』:結束
比如像:ഷ
有關 Html Unicode 的訊息請參考:http://en.wikipedia.org/wiki/Unicode_and_HTML
PS.我嘗試過用 HttpUtility.HtmlEncode() 來處理,不過失敗。
轉碼功能如下
{ if (string.IsNullOrEmpty(originalData)) { throw new ArgumentNullException("originalData"); } StringBuilder result = new StringBuilder(); for (int i = 0; i < originalData.Length; i++) { var code = (long)originalData[i]; if (code > 255)//超過255表示非ASCII Code { result.Append("&#"); result.Append(code); result.Append(";"); } else { result.Append(originalData[i]); } } return result.ToString(); }
另外,在網路上找到了 Regex 的處理方法
string htmlFragment = R&B!@#$%^&*()-=~陶喆唱歌很好听,你能显示简体字吗?蓋高尚唉哀皚癌藹矮艾礙愛隘熬翺襖傲奧懊澳芭捌,台灣~にほんご; var msg = Regex.Replace(htmlFragment, @"[\u0080-\uFFFF]", m => @"&#" + ((int)m.Value[0]).ToString() + ";");
轉碼成功後發送簡訊也不是什麼困難的事了,在這裡我參考 System.Net.Http,程式碼如下:
{ var msg = ToHtmlUnicode("R&B!@#$%^&*()-=~陶喆唱歌很好听,你能显示简体字吗?蓋高尚唉哀皚癌藹矮艾礙愛隘熬翺襖傲奧懊澳芭捌,台灣~にほんご"); HttpClient client = new HttpClient(); StringBuilder url = new StringBuilder("http://www.moding.com.tw/openAPI/sendSMS?"); url.Append("username=").Append("帳號"); url.Append("&password=").Append("密碼"); url.Append("&destinatingAddress=").Append("手機"); url.Append("&returnMode=1"); url.Append("&SMS=").Append(HttpUtility.UrlEncode(msg, Encoding.UTF8)); var id = client.GetStringAsync(url.ToString()).Result; return id; }
使用 Html Unicode 雖然會佔用較多數據,但也因為如此能處理不同的文字,簡體、日文,還有一些比較特殊的中文字,比如說『喆』,也都能正確的從手機上收到,下圖為網頁報表
透過返回的ID值,我們可以查詢發送狀態,這部份就不另外再敘述做法了,有興趣的人再自行使用
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/03/08/144283.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET