阿里大魚是阿里推出的產品,官方提供JAVA、.NET、PHP等版本的SDK下載,不知爲什麼,惟獨不提供ASP版本的SDK。
不提供不要緊,本身寫就是了,參照官方提供的API寫一個就是了。
原本覺得無非是向阿里大魚的接口POST或者GET數據而已,但真正作了發現沒有那麼簡單,最難的是簽名,簽名分兩步一個是拼接參數,一個是加密。
原理以下:md5(secret+按順序拼接好的參數名與參數值+secret)
1.對數組進行排序而後拼接
數組
'' ' 對數組排序 ' param sPara 排序前的數組 ' return 排序後的數組 Function SortPara(sPara) Dim nCount nCount = ubound(sPara) For i = nCount To 0 Step -1 minmax = sPara( 0 ) minmaxSlot = 0 For j = 1 To i mark = (sPara( j ) > minmax) If mark Then minmax = sPara( j ) minmaxSlot = j End If Next If minmaxSlot <> i Then temp = sPara( minmaxSlot ) sPara( minmaxSlot ) = sPara( i ) sPara( i ) = temp End If Next SortPara = sPara end function
'' ' 把數組全部元素,按照「參數參數值參數參數值……」的模式拼接成字符串 ' param sPara 須要拼接的數組 ' return 拼接完成之後的字符串 Function CreateParamstring(sPara) nCount = ubound(sPara) Dim prestr For i = 0 To nCount prestr = prestr & sPara(i) Next CreateParamstring = replace(prestr,"=","") End Function
2.加密有兩種:MD5和HMAC_MD5,咱們使用MD5
安全
'' ' MD5簽名 ' param prestr 須要簽名的字符串 ' param secret 私鑰 ' param input_charset 編碼格式 ' return 簽名結果 Function Md5Sign(prestr, secret, input_charset) Dim mysign '把拼接後的字符串再與安全校驗碼直接鏈接起來 prestr = secret & prestr & secret mysign = MD5(prestr, input_charset) Md5Sign = UCase(mysign) End Function 3.將簽名拼接到url中請求遠程接口 '' ' 創建請求,以模擬遠程HTTP的GET請求方式構造並獲取阿里大魚純文字類型處理結果 ' param sParaTemp 請求前的參數數組 ' return 阿里大魚處理結果 Public Function BuildRequestHttpWord(sParaTemp) Dim sUrl, objHttp, sResponseTxt '待請求參數數組字符串 sRequestData = BuildRequestParaToString(sParaTemp) '構造請求地址 sUrl = GATEWAY_NEW & sRequestData 'response.Write(sRequestData) 'response.End() '獲取遠程數據 Set objHttp=Server.CreateObject("Microsoft.XMLHTTP") '若是Microsoft.XMLHTTP不行,那麼請替換下面的兩行行代碼嘗試 'Set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0") 'objHttp.setOption 2, 13056 objHttp.open "GET", sUrl, False, "", "" objHttp.send() sResponseTxt = objHttp.ResponseText Set objHttp = Nothing BuildRequestHttpWord = sResponseTxt End Function
綜上,就完成一次發送短信的操做。ui