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

综上,就完成一次发送短信的操作。

最新文章

  1. 应用OpenMP的一个简单的设计模式
  2. 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)
  3. [Java 基础]数据类型
  4. PHP For Windows/php-5.6.11-Win32-VC11-x64启动脚本
  5. Javascript函数的简单学习
  6. Nutch搜索引擎(第4期)_ Eclipse开发配置
  7. JVM如何理解Java泛型类(转)
  8. [转载+原创]Emgu CV on C# (三) —— Emgu CV on 均衡化
  9. mysql 。。。
  10. 转:阿里开源Mysql分布式中间件:Cobar
  11. Buddy system伙伴分配器实现
  12. html5 新属性
  13. ZedBoard开发板学习记录(一)之开发环境的搭建(Ubuntu16.04)以及运行HelloWorld程序的测试
  14. mayavi安装
  15. SAP Change Request Management (ChaRM)基础教程
  16. Windows Phone本地数据库(SQLCE):9、Connection Strings(翻译) (转)
  17. C118+OSMCOMBB嗅探短信
  18. js中实现对checkbox选中和取消
  19. 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
  20. jzoj5843

热门文章

  1. 关于Linux操作系统层次结构分析
  2. socket 的通信过程
  3. Exact Change FreeCodeCamp
  4. c++ socket C/S通信实例
  5. 解决python执行cmd命令出现&quot;XXX不是内部命令&quot;的问题
  6. IOS让自定义类是用下标
  7. sublime 自定义快捷生成代码块
  8. webpack学习笔记(3)--webpack.config.js
  9. HDU 1385 Minimum Transport Cost( Floyd + 记录路径 )
  10. Python编程:从入门到实践 - matplotlib篇 - plot &amp; scatter