使用MSXML2.ServerXMLHTTP发送数据,有超时功能
' 判断服务器MSXML2.ServerXMLHTTP
Function getXMLHTTP()
On Error Resume Next
Dim Temp
getXMLHTTP="MSXML2.ServerXMLHTTP"
Err = 0
Dim TmpObj
Set TmpObj = Server.CreateObject(getXMLHTTP)
Temp = Err
IF Temp = 1 or Temp = -2147221005 Then
getXMLHTTP="Msxml2.ServerXMLHTTP.5.0"
End IF
Err.Clear
Set TmpObj = Nothing
Err = 0
end function
Function smsSend(url)
xmlobj=getXMLHTTP()
set xmlHttp=server.createobject(xmlobj)
xmlHttp.setTimeouts 10000,10000,10000,30000 '解释时间,连接时间,发送时间,接收时间。(单位毫秒)
xmlHttp.open "POST",url,false 'POST 可改为get
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttp.send
if xmlHttp.readystate=4 then
if xmlHttp.status=200 then
Result=xmlhttp.responsebody
else
Result=""
end if
end if
set xmlHttp=Nothing
smsSend=Result
End Function
调用方式:
如:
Call smsSend("网址/test.asp?smstxt="&server.URLEncode("测试3内容123"))
或
body=smsSend("网址/test.asp?smstxt="&server.URLEncode("测试3内容123"))
记住传数据时要使用server.URLEncode,要不然服务器接收参数的内容是乱码的。
Msxml2.XMLHTTP发送没有超时的,这样发送会把IIS搞死,改用MSXML2.ServerXMLHTTP加上超时的,就OK了。
Set objXml =Server.CreateObject("MSXML2.ServerXMLHTTP")
objXml.SetTimeOuts 10000, 10000, 15000, 15000
第一个数值:解析DNS名字的超时时间10秒
第二个数值:建立Winsock连接的超时时间10秒
第三个数值:发送数据的超时时间15秒
第四个数值:接收response的超时时间15秒