网页编程 - XMLHTTP中关于POST发送数据的方式

函数中的QueryURl,QueryStr分别代表获取远程文件的网页地址及相应的参数,参数的设置方法与querystring的设置方法一样。

<%

function PostHttpData(QueryURl,QueryStr)

  on error resume next

  dim EnQueryStr,XMLHttp

  EnQueryStr = URLEncoding(QueryStr)

  set XMLHttp = Server.CreateObject("MSXML2.serverXMLHTTP")

  XMLHttp.open "POST", QueryURl, false

  XMLHttp.setRequestHeader "Content-Length", Len(EnQueryStr)

  XMLHttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"

  XMLHttp.setRequestHeader "Referer", QueryURl

  XMLHttp.send EnQueryStr

  dim HttpStr

  if err.number = 0 then

    if XMLHttp.status = 200 then

      HttpStr = bytes2BSTR(XMLHttp.ResponseBody)

    else

      HttpStr = "-1"

    end if

  else

    err.clear

    HttpStr = "-1"

  end if

  set XMLHttp = nothing

  PostHttpData = HttpStr

end function

Function URLEncoding(vstrIn)

  dim strReturn,i

  strReturn = ""

  For i = 1 To Len(vstrIn)

    dim ThisChr,innerCode

    ThisChr = Mid(vStrIn,i,1)

    If Abs(Asc(ThisChr)) < &HFF Then

      strReturn = strReturn & ThisChr

    Else

      innerCode = Asc(ThisChr)

      If innerCode < 0 Then

        innerCode = innerCode + &H10000

      End If

      dim Hight8,Low8

      Hight8 = (innerCode And &HFF00)\ &HFF

      Low8 = innerCode And &HFF

      strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)

    End If

  Next

  URLEncoding = strReturn

End Function

Function bytes2BSTR(vIn)

  dim strReturn,i

  strReturn = ""

  For i = 1 To LenB(vIn)

    dim ThisCharCode,NextCharCode

    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

%>