阿里大鱼还未提供 .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);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月14日
2024年11月14日
- 窦唯1994《黑梦》上海音像首版[WAV分轨][1G]
- 郭子.1996-为爱偷生(载歌载舞歌载戏“极度疯狂”唱作全纪录)【滚石】【WAV+CUE】
- 伍佰.2003-泪桥【艾回】【WAV+CUE】
- 南台湾小姑娘.1996-爱作梦的查某囡仔【大旗】【WAV+CUE】
- 群星《天碟落地-世界[HI-FI] 女声》[WAV分轨][1.1G]
- 黎明《但愿不只是朋友》2022蜚声环球限量版 [WAV+CUE][1G]
- 李玉刚《怀旧辑》玉泽东方[WAV+CUE][1.1G]
- 魔兽世界wlk刺杀贼一键输出宏是什么 wlk刺杀贼一键输出宏介绍
- 魔兽世界wlk战斗贼一键输出宏是什么 wlk战斗贼一键输出宏介绍
- 魔兽世界wlk敏锐贼一键输出宏是什么 wlk敏锐贼一键输出宏介绍
- 李逸朗2007-李威乐[英皇娱乐][WAV+CUE]
- DavidVersace-EyetoEye(2024)[24-44,1]
- SimoneLamsma,RobertKulek-Mendelssohn,Janacek,Schumann-SonatasforViolinandPiano【SAC
- 《街头篮球》大动作:新增五大服务器节点 优化玩家体验
- 任天堂宣布推出音乐APP!仅面向NSO订阅用户