阿里大鱼简单发送短信功能.net core版
阿里大鱼还未提供.netcore版SDK,但提供了相关API,下面是.netcore版实现,只是简单发送短信功能:
usingSystem; usingSystem.Collections.Generic; usingSystem.IO; usingSystem.Net; usingSystem.Security.Cryptography; usingSystem.Text; usingNewtonsoft.Json; namespaceConsoleApp1 { publicclassSmsHelper { publicstaticstringPost(stringurl,stringdata,Encodingencoding) { try { HttpWebRequestreq=WebRequest.CreateHttp(newUri(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); StreamreqStream=req.GetRequestStreamAsync().Result; reqStream.Write(postData,0,postData.Length); reqStream.Dispose(); varrsp=(HttpWebResponse)req.GetResponseAsync().Result; varresult=GetResponseAsString(rsp,encoding); returnresult; } catch(Exceptionex) { throw; } } publicstaticTPost<T>(stringurl,stringdata,Encodingencoding) { try { varresult=Post(url,data,encoding); returnJsonConvert.DeserializeObject<T>(result); } catch(Exceptionex) { returndefault(T); } } publicstaticstringBuildQuery(IDictionary<string,string>parameters) { if(parameters==null||parameters.Count==0) { returnnull; } StringBuilderquery=newStringBuilder(); boolhasParam=false; foreach(KeyValuePair<string,string>kvinparameters) { stringname=kv.Key; stringvalue=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; } } returnquery.ToString(); } publicstaticstringGetResponseAsString(HttpWebResponsersp,Encodingencoding) { Streamstream=null; StreamReaderreader=null; try { //以字符流的方式读取HTTP响应 stream=rsp.GetResponseStream(); reader=newStreamReader(stream,encoding); returnreader.ReadToEnd(); } finally { //释放资源 if(reader!=null)reader.Dispose(); if(stream!=null)stream.Dispose(); if(rsp!=null)rsp.Dispose(); } } publicstaticstringGetAlidayuSign(IDictionary<string,string>parameters,stringsecret,stringsignMethod) { //把字典按Key的字母顺序排序 IDictionary<string,string>sortedParams=newSortedDictionary<string,string>(parameters,StringComparer.Ordinal); //把所有参数名和参数值串在一起 StringBuilderquery=newStringBuilder(); if(Constants.SIGN_METHOD_MD5.Equals(signMethod)) { query.Append(secret); } foreach(KeyValuePair<string,string>kvinsortedParams) { 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)) { returnHmac(query.ToString(),secret); } else { query.Append(secret); returnMd5(query.ToString()); } } publicstaticstringHmac(stringvalue,stringkey) { byte[]bytes; using(varhmac=newHMACMD5(Encoding.UTF8.GetBytes(key))) { bytes=hmac.ComputeHash(Encoding.UTF8.GetBytes(value)); } StringBuilderresult=newStringBuilder(); foreach(bytetinbytes) { result.Append(t.ToString("X2")); } returnresult.ToString(); } publicstaticstringMd5(stringvalue) { byte[]bytes; using(varmd5=MD5.Create()) { bytes=md5.ComputeHash(Encoding.UTF8.GetBytes(value)); } varresult=newStringBuilder(); foreach(bytetinbytes) { result.Append(t.ToString("X2")); } returnresult.ToString(); } publicstaticSmsResultAliSendSms(stringurl,stringappKey,stringappSecret,DateTimetimestamp,Dictionary<string,string>parsms) { vartxtParams=newSortedDictionary<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(variteminparsms) { txtParams.Add(item.Key,item.Value); } txtParams.Add(Constants.SIGN,GetAlidayuSign(txtParams,appSecret,Constants.SIGN_METHOD_HMAC)); varresult=Post<SmsResultAli>(url,BuildQuery(txtParams),Encoding.UTF8); returnresult; } } publicclassSmsResultAli { publicSmsResponseALiAlibaba_Aliqin_Fc_Sms_Num_Send_Response{get;set;} } publicclassSmsResponseALi { publicstringRequest_Id{get;set;} publicSmsResponseResultAliResult{get;set;} } publicclassSmsResponseResultAli { publicstringErr_Code{get;set;} publicstringModel{get;set;} publicboolSuccess{get;set;} } }
发送短信时:
varparms=newDictionary<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"); varreq=SmsHelper.SendSms("http://gw.api.taobao.com/router/rest","appKey","appSecret",DateTime.Now,parms);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。