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


一、問題背景

  繼上次七牛雲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等互聯網相關

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

 


免責聲明!

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



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