一尘不染

使用经典ASP访问请求的正文?

json

如何访问客户端发布到经典ASP服务器的内容?我知道有Request.Forms变量,但是客户端的请求不是使用Form发出的。客户端请求的主体只是使用标准POST语句生成的字符串。谢谢


阅读 253

收藏
2020-07-27

共1个答案

一尘不染

如果客户端发送的请求的内容类型不是表单数据,则需要读取请求字节。在这种情况下,请求不是可通过名称-
值对访问的表单数据,因此您不能使用Request.Form集合。我建议研究BinaryRead方法。

读取发布的数据并转换为字符串:

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

希望能帮助到你。

更新#1:

使用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
}
2020-07-27