[C#.NET][SMS] 調用 摩叮簡訊 MoDing Web Service 發送單向簡訊 - 使用 Html Unicode

  • 4143
  • 0
  • SMS
  • 2015-12-29

[C#.NET][SMS] 調用 摩叮簡訊 MoDing Web Service 發送單向簡訊 - 使用 Html Unicode

摩叮簡訊,註冊完之後,就會免費領到 10 點,API手冊也必須要寫信去申請,若點數不夠用開發測試使用的話,可以發信再去申請。

http://www.moding.com.tw/

 

調用方式跟前面幾篇介紹的一樣

image

 

跟之前比較不一樣的地方,它是用 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 雖然會佔用較多數據,但也因為如此能處理不同的文字,簡體、日文,還有一些比較特殊的中文字,比如說『喆』,也都能正確的從手機上收到,下圖為網頁報表
image

 

 
透過返回的ID值,我們可以查詢發送狀態,這部份就不另外再敘述做法了,有興趣的人再自行使用

image

 


文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/03/08/144283.aspx

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo