<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        阿里大魚簡單發送短信功能.net core版

        來源:懂視網 責編:小采 時間:2020-11-27 22:36:48
        文檔

        阿里大魚簡單發送短信功能.net core版

        阿里大魚簡單發送短信功能.net core版:阿里大魚還未提供 .net core 版SDK,但提供了相關API,下面是.net core版實現,只是簡單發送短信功能: using System; using System.Collections.Generic; using System.IO; using System.Net; using System.S
        推薦度:
        導讀阿里大魚簡單發送短信功能.net core版:阿里大魚還未提供 .net core 版SDK,但提供了相關API,下面是.net core版實現,只是簡單發送短信功能: using System; using System.Collections.Generic; using System.IO; using System.Net; using System.S

        阿里大魚還未提供 .net core 版SDK,但提供了相關API,下面是.net core版實現,只是簡單發送短信功能: 

        using System;
        using System.Collections.Generic;
        using System.IO;
        using System.Net;
        using System.Security.Cryptography;
        using System.Text;
        using Newtonsoft.Json;
        
        namespace ConsoleApp1
        {
         public class SmsHelper
         {
         public static string Post(string url, string data, Encoding encoding)
         {
         try
         {
         HttpWebRequest req = WebRequest.CreateHttp(new Uri(url));
         req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
         req.Method = "POST";
         req.Accept = "text/xml,text/javascript";
         req.ContinueTimeout = 60000;
        
         byte[] postData = encoding.GetBytes(data);
         Stream reqStream = req.GetRequestStreamAsync().Result;
         reqStream.Write(postData, 0, postData.Length);
         reqStream.Dispose();
        
         var rsp = (HttpWebResponse)req.GetResponseAsync().Result;
         var result = GetResponseAsString(rsp, encoding);
         return result;
         }
         catch (Exception ex)
         {
         throw;
         }
         }
        
         public static T Post<T>(string url, string data, Encoding encoding)
         {
         try
         {
         var result = Post(url, data, encoding);
         return JsonConvert.DeserializeObject<T>(result);
         }
         catch (Exception ex)
         {
         return default(T);
         }
         }
        
         public static string BuildQuery(IDictionary<string, string> parameters)
         {
         if (parameters == null || parameters.Count == 0)
         {
         return null;
         }
        
         StringBuilder query = new StringBuilder();
         bool hasParam = false;
        
         foreach (KeyValuePair<string, string> kv in parameters)
         {
         string name = kv.Key;
         string value = kv.Value;
         // 忽略參數名或參數值為空的參數
         if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
         {
         if (hasParam)
         {
         query.Append("&");
         }
        
         query.Append(name);
         query.Append("=");
         query.Append(WebUtility.UrlEncode(value));
         hasParam = true;
         }
         }
        
         return query.ToString();
         }
        
         public static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
         {
         Stream stream = null;
         StreamReader reader = null;
        
         try
         {
         // 以字符流的方式讀取HTTP響應
         stream = rsp.GetResponseStream();
         reader = new StreamReader(stream, encoding);
         return reader.ReadToEnd();
         }
         finally
         {
         // 釋放資源
         if (reader != null) reader.Dispose();
         if (stream != null) stream.Dispose();
         if (rsp != null) rsp.Dispose();
         }
         }
        
         public static string GetAlidayuSign(IDictionary<string, string> parameters, string secret, string signMethod)
         {
         //把字典按Key的字母順序排序
         IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal);
        
         //把所有參數名和參數值串在一起
         StringBuilder query = new StringBuilder();
         if (Constants.SIGN_METHOD_MD5.Equals(signMethod))
         {
         query.Append(secret);
         }
         foreach (KeyValuePair<string, string> kv in sortedParams)
         {
         if (!string.IsNullOrEmpty(kv.Key) && !string.IsNullOrEmpty(kv.Value))
         {
         query.Append(kv.Key).Append(kv.Value);
         }
         }
        
         //使用MD5/HMAC加密
         if (Constants.SIGN_METHOD_HMAC.Equals(signMethod))
         {
         return Hmac(query.ToString(), secret);
         }
         else
         {
         query.Append(secret);
         return Md5(query.ToString());
         }
         }
        
         public static string Hmac(string value, string key)
         {
         byte[] bytes;
         using (var hmac = new HMACMD5(Encoding.UTF8.GetBytes(key)))
         {
         bytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(value));
         }
         StringBuilder result = new StringBuilder();
         foreach (byte t in bytes)
         {
         result.Append(t.ToString("X2"));
        
         }
         return result.ToString();
         }
        
         public static string Md5(string value)
         {
         byte[] bytes;
         using (var md5 = MD5.Create())
         {
         bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(value));
         }
         var result = new StringBuilder();
         foreach (byte t in bytes)
         {
         result.Append(t.ToString("X2"));
         }
         return result.ToString();
         }
        
         public static SmsResultAli SendSms(string url, string appKey, string appSecret, DateTime timestamp, Dictionary<string, string> parsms)
         {
         var txtParams = new SortedDictionary<string, string>();
         txtParams.Add(Constants.METHOD, "alibaba.aliqin.fc.sms.num.send");
         txtParams.Add(Constants.VERSION, "2.0");
         txtParams.Add(Constants.SIGN_METHOD, Constants.SIGN_METHOD_HMAC);
         txtParams.Add(Constants.APP_KEY, appKey);
         txtParams.Add(Constants.FORMAT, "json");
         txtParams.Add(Constants.TIMESTAMP, timestamp.ToString(Constants.DATE_TIME_FORMAT));
         txtParams.Add(Constants.SMS_TYPE, "normal");
         foreach (var item in parsms)
         {
         txtParams.Add(item.Key,item.Value);
         }
        
         txtParams.Add(Constants.SIGN, GetAlidayuSign(txtParams, appSecret, Constants.SIGN_METHOD_HMAC));
         var result = Post<SmsResultAli>(url, BuildQuery(txtParams), Encoding.UTF8);
        
         return result;
         }
        
         }
        
         public class SmsResultAli
         {
         public SmsResponseALi Alibaba_Aliqin_Fc_Sms_Num_Send_Response { get; set; }
         }
        
         public class SmsResponseALi
         {
         public string Request_Id { get; set; }
         public SmsResponseResultAli Result { get; set; }
         }
        
         public class SmsResponseResultAli
         {
         public string Err_Code { get; set; }
        
         public string Model { get; set; }
        
         public bool Success { get; set; }
         }
        }
        
        

        發送短信時:          

        var parms = new Dictionary<string, string>();
         parms.Add(Constants.EXTEND, "123456");
         parms.Add(Constants.REC_NUM, "138********");
         parms.Add(Constants.SMS_FREE_SIGN_NAME, "阿里大魚");
         parms.Add(Constants.SMS_PARAM, "{\"code\":\"1234\",\"product\":\"阿里大魚\"}");
         parms.Add(Constants.SMS_TEMPLATE_CODE, "SMS_10000000");
        
        var req = SmsHelper.SendSms("http://gw.api.taobao.com/router/rest", "appKey", "appSecret", DateTime.Now, parms);
        

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        阿里大魚簡單發送短信功能.net core版

        阿里大魚簡單發送短信功能.net core版:阿里大魚還未提供 .net core 版SDK,但提供了相關API,下面是.net core版實現,只是簡單發送短信功能: using System; using System.Collections.Generic; using System.IO; using System.Net; using System.S
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产小视频精品久久久三级| 亚洲∧v久久久无码精品| 亚洲黄色网站视频| 国产成人一区二区三区视频免费| 亚欧免费一级毛片| 亚洲国产精品国自产电影| 国产成人精品无码免费看 | 亚洲va久久久久| 午夜宅男在线永久免费观看网| 日韩成全视频观看免费观看高清| 精品亚洲一区二区三区在线播放| 亚洲狠狠ady亚洲精品大秀| 91频在线观看免费大全| 亚洲国产精品成人综合久久久 | 毛片a级毛片免费播放下载| 久久亚洲精品无码aⅴ大香 | 亚洲精品人成电影网| 国语成本人片免费av无码| 亚洲日韩乱码中文字幕| 在线A级毛片无码免费真人| 精品一区二区三区无码免费直播 | 亚洲中文字幕久久精品无码喷水| 亚洲同性男gay网站在线观看| 国产免费久久久久久无码| 国产成人A人亚洲精品无码| 2019中文字幕在线电影免费 | 亚洲AV无码一区二区乱子伦| 免费av片在线观看网站| 午夜影视日本亚洲欧洲精品一区| 免费一级毛片在线播放放视频| 亚洲精品在线免费看| 亚洲精品无码人妻无码| 亚洲另类激情综合偷自拍图| 99久久99热精品免费观看国产| 亚洲国产精品成人| 久久福利青草精品资源站免费| 免费播放特黄特色毛片| 免费人成黄页在线观看日本| 亚洲熟妇无码八V在线播放| 亚洲日韩小电影在线观看| 青苹果乐园免费高清在线|