当前位置: 洪哥笔记 > ASP > VBScript之XMLHTTP

 

VBScript之XMLHTTP


关键词

VBScript之XMLHTTP

摘要

VBScript之XMLHTTP

     

XMLHTTP 是客户端模拟浏览器操作的一个对象,下面是通过示例表示使用方法

Set xmlHttp = CreateObject("Msxml2.ServerXMLHTTP")

xmlHttp.open "POST","http://domain/login.asp",False     'POST方法用同步方式打开链接,同步是指等待服务器返回全部内容后再进行下一步
xmlHttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"        'POST提交表单前需要加这段
xmlHttp.send "user=" & user &"&password=" & password    '提交参数,如果参数里有中文,必须首先把中文转换成URL编码

xmlHttp.open "GET","http://domain/logout.asp",False     'GET方法打开链接
xmlHttp.send

status = xmlHttp.status                                'xmlHttp.status为返回代码
content = bytes2BSTR(xmlHttp.responseBody)             '返回的内容   

Set xmlHttp = Nothing

-------------------------------------------------------

注意:
xmlhttp会缓存页面内容,当向同一个URL多次提交数据时,浏览器可能会不向服务器发送信息,直接返回缓存中的内容,导致某些问题
可以在URL后面随便加一个参数避免缓存问题

xmlHttp.open "POST","http://domain/login.asp?"&radomvalue,False        'radomvalue设置为一个随机的值
也可以在open方法之后设置
xmlhttp.setRequestHeader "If-Modified-Since", "0"
这样也可以避免缓存,而且不必修改请求的链接

xmlHttp的超时时间默认为1小时,如果要打开的服务器响应很慢,会等待很长时间,持续占用很高的CPU,可以用setTimeouts来设置
这个方法Msxml2.ServerXMLHTTP有但Msxml2.XMLHTTP没有,设置方法如下

xmlHttp.setTimeouts resolveTimeout,connectTimeout,sendTimeout,receiveTimeout
resolveTimeout = 3000   '解析DNS名字的超时时间,3秒
connectTimeout = 3000   '建立Winsock连接的超时时间,3秒
sendTimeout = 3000      '发送数据的超时时间,3秒
receiveTimeout = 10000  '接收response的超时时间,10秒

-------------------------------------------------------

Function bytes2BSTR(vIn)                                '二进制转字符
    strReturn = ""
    For i = 1 To LenB(vIn)
        ThisCharCode = AscB(MidB(vIn,i,1))
        If ThisCharCode < &H80 Then
            strReturn = strReturn & Chr(ThisCharCode)
        Else
            NextCharCode = AscB(MidB(vIn,i+1,1))
            strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
            i = i + 1
        End If
    Next
    bytes2BSTR = strReturn
End Function


Public Function URLEncode(strURL)                                '中文URL编码
Dim I
Dim tempStr
For I = 1 To Len(strURL)
    If Asc(Mid(strURL, I, 1)) < 0 Then
       tempStr = "%" & Right(CStr(Hex(Asc(Mid(strURL, I, 1)))), 2)
       tempStr = "%" & Left(CStr(Hex(Asc(Mid(strURL, I, 1)))), Len(CStr(Hex(Asc(Mid(strURL, I, 1))))) - 2) & tempStr
       URLEncode = URLEncode & tempStr
    ElseIf (Asc(Mid(strURL, I, 1)) >= 65 And Asc(Mid(strURL, I, 1)) <= 90) Or (Asc(Mid(strURL, I, 1)) >= 97 And Asc(Mid(strURL, I, 1)) <= 122) Then
       URLEncode = URLEncode & Mid(strURL, I, 1)
    Else
       URLEncode = URLEncode & "%" & Hex(Asc(Mid(strURL, I, 1)))
    End If
Next
End Function


Public Function URLDecode(strURL)                                '中文URL解码
Dim I

If InStr(strURL, "%") = 0 Then URLDecode = strURL: Exit Function

For I = 1 To Len(strURL)
    If Mid(strURL, I, 1) = "%" Then
       If eval("&H" & Mid(strURL, I + 1, 2)) > 127 Then
          URLDecode = URLDecode & Chr(eval("&H" & Mid(strURL, I + 1, 2) & Mid(strURL, I + 4, 2)))
          I = I + 5
       Else
          URLDecode = URLDecode & Chr(eval("&H" & Mid(strURL, I + 1, 2)))
          I = I + 2
       End If
    Else
       URLDecode = URLDecode & Mid(strURL, I, 1)
    End If
Next
End Function

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:VBScript之XMLHTTP:http://www.splaybow.com/post/vbscript-xmlhttp.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« VBScript之XMLDOM 操作EXCEL »

相关文章: