asp實現阿里大魚短信API接口的方法

阿里大魚是阿里推出的產品,官方提供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

相關文章
相關標籤/搜索