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

use*_*719 7 post json request asp-classic

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

Kul*_*gin 21

如果客户端发送的请求的内容类型不是表单数据,则需要读取请求字节.在这种情况下,请求不是可通过名称 - 值对访问的表单数据,因此您无法使用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
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

更新#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
}
Run Code Online (Sandbox Code Playgroud)