1. 程式人生 > >.NET Core阿裏大於短信發送SDK修改以及使用

.NET Core阿裏大於短信發送SDK修改以及使用

tps 阿裏 als type app normal 去掉 secret 說明

一、問題背景

  繼上次七牛雲SDK的問題之後(參考:http://www.cnblogs.com/OMango/p/8447480.html),在發送短信的功能上又出現了問題,我們短信服務使用的是阿裏大於的服務,之前的平臺是.NET Framework的平臺,使用阿裏官方的SDK並沒有出現什麽幺蛾子,但是轉到.NET Core下後,找遍了阿裏官方也並沒有找到.NET Core的SDK,不得不說,在這方面.NET Core還有很長的路要走啊,雖然沒有SDK,但是功能還是要完成啊,那怎麽辦呢?只能自己從.NetFrameWork的SDK裏進行提取

二、修改說明

  emmmm,好好看了一遍SDK以及官方文檔後,發現topsdk裏面還包含了其他的一些功能,但是我只需要短信服務啊,SO,既然準備改造那就把其他的相關功能都去掉了,只留下了短信相關功能,廢話不多說先上鏈接https://github.com/Hello-Mango/MTopSdkSMS.Core,這是我已經修改後的代碼,也經過測試可以發送短信到手機,dll也已經上傳到NUGET(搜索MTopSdkSMS)

  修改方案主要是.NET FrmeWork下的HttpRequest類在.NetCore中不是默認帶的,所以需要安裝Microsoft.AspNetCore.Http,該SDK裏還使用了反射的方法,所以還需要安裝System.Reflection.Emit.Lightweight,最後一點就是將

wReq.ServicePoint.Expect100Continue = false;

修改為

ServicePointManager.Expect100Continue = false;

  如果不修改的話,會報平臺不支持的錯誤,如果大家想自己嘗試的話,可以下載官方的SDK源碼進行.NET Core的改造,或者可以直接Nuget搜索MTopSdkSMS

三、具體使用

  具體的代碼使用方法完全可以參照官方的文檔使用,我這邊就給出一個簡單的封裝代碼

 public SMS(string phoneNo, String template, String _AppKey, String _AppSecret, String _Extend, String _SmsFreeSignName, String _SmsTemplateCode)
        {
            _phoneNo = phoneNo;
            _template = template;
            Appsecret = _AppSecret;
            Appkey 
= _AppKey; Extend = _Extend; SmsFreeSignName = _SmsFreeSignName; SmsTemplateCode = _SmsTemplateCode; } /// <summary> ///短信身份驗證 /// </summary> /// <param name="phoneNo">手機號</param> /// <param name="dicParam">短信模板變量,對應模板中自定義字段</param> /// <returns></returns> public String Send() { //短息通知API請求參數 ITopClient client = new DefaultTopClient(url, Appkey, Appsecret); AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest(); req.Extend = Extend; //公共回傳參數,在“消息返回”中會透傳回該參數; req.SmsType = "normal"; //短信類型,傳入值請填寫normal req.SmsFreeSignName = SmsFreeSignName; //短信簽名 req.SmsParam = _template; //短信模板變量 req.RecNum = _phoneNo; //短信接收號碼 req.SmsTemplateCode = SmsTemplateCode; //短信模板ID AlibabaAliqinFcSmsNumSendResponse response = client.Execute<AlibabaAliqinFcSmsNumSendResponse>(req); if (response.Result == null) { return GetErrorMsg(response.SubErrCode); } else { return response.Result.Success.ToString(); } }

四、總結

  .NET Core目前來說第三方庫上支持相對於其他來說還是比較少,例如oracle目前還都沒有關於.NET Core的驅動庫,一些簡單的碰到只能自己想辦法去轉換或者其他途徑實現,但是後續相信.NET Core會越來越好

  PS:由於這個只是我個人的修改作品,未經過大量的驗證,如果大家發現有什麽問題的話,也請聯系我。

作者: Mango

出處: http://www.cnblogs.com/OMango/

關於自己:專註.Net桌面開發以及Web後臺開發,開始接觸微服務、docker等互聯網相關

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,如有問題, 可郵件([email protected])咨詢.

.NET Core阿裏大於短信發送SDK修改以及使用