Accessing a request's body using classic ASP?

后端 未结 3 598
旧巷少年郎
旧巷少年郎 2020-12-01 19:41

How do I access what has been posted by a client to my classic ASP server? I know that there is the Request.Forms variable, but the client\'s request was not made using a Fo

3条回答
  •  猫巷女王i
    2020-12-01 20:02

    You need to read request bytes if content type of request sent by client is not form data. In this case, request is not a form-data that is accessible through name-value pairs so you cannot use Request.Form collection. I suggest investigate the BinaryRead method.

    Reading posted data and convert into string :

    If Request.TotalBytes > 0 Then
        Dim lngBytesCount
            lngBytesCount = Request.TotalBytes
        Response.Write BytesToStr(Request.BinaryRead(lngBytesCount))
    End If
    
    Function BytesToStr(bytes)
        Dim Stream
        Set Stream = Server.CreateObject("Adodb.Stream")
            Stream.Type = 1 'adTypeBinary
            Stream.Open
            Stream.Write bytes
            Stream.Position = 0
            Stream.Type = 2 'adTypeText
            Stream.Charset = "iso-8859-1"
            BytesToStr = Stream.ReadText
            Stream.Close
        Set Stream = Nothing
    End Function
    

    Hope it helps.

    Update #1:

    With using JScript

    if(Request.TotalBytes > 0){
        var lngBytesCount = Request.TotalBytes
        Response.Write(BytesToStr(Request.BinaryRead(lngBytesCount)))
    }
    
    function BytesToStr(bytes){
        var stream = Server.CreateObject("Adodb.Stream")
            stream.type = 1
            stream.open
            stream.write(bytes)
            stream.position = 0
            stream.type = 2
            stream.charset = "iso-8859-1"
        var sOut = stream.readtext()
            stream.close
        return sOut
    }
    

提交回复
热议问题