麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:31:06
字體:
來源:轉載
供稿:網友

阿里大魚還未提供 .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);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人三级电影网址 | 亚洲成人精品视频 | 黄色片免费在线 | 欧美一级电影网 | 操操操操网 | 久久久久久中文字幕 | 欧美 日韩 亚洲 中文 | 亚洲精品v天堂中文字幕 | 在线观看视频日本 | 日韩色电影 | 爱爱插插视频 | 日韩.www | av在线在线 | 亚洲日本韩国在线观看 | av手机免费在线观看 | 亚洲成人免费网站 | 久久国产精品久久久久 | 欧美在线观看视频网站 | 国产亚洲精品久久久久久久久久 | 欧美视频一区二区三区 | 亚洲va国产va | 欧美性受xxxxxx黑人xyx性爽 | 久久久久久久亚洲精品 | 午夜网站视频 | 91 视频网站 | 亚洲五码在线观看视频 | 一级爱片| 国产一区二区三区黄 | 日产精品久久久一区二区开放时间 | 日韩 综合| 国产成人高清在线观看 | 另类亚洲孕妇分娩网址 | 久久久久久久久浪潮精品 | 国产一区精品在线观看 | 成人免费观看毛片 | 欧美精选一区二区 | 久久久久久免费 | 国产精品久久久毛片 | 中文字幕亚洲一区二区三区 | 午夜精品福利在线观看 | 欧美成人一区二区三区 |