使用经典 ASP 访问请求正文? [英] Accessing a request's body using classic ASP?
问题描述
如何访问客户端发布到我的经典 ASP 服务器的内容?我知道有 Request.Forms 变量,但客户的请求不是使用 Form 发出的.客户端请求的正文只是一个使用标准 POST 语句生成的字符串.谢谢
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 Form. The client request's body is just a string made using a standard POST statement. Thanks
推荐答案
如果客户端发送的请求的内容类型不是表单数据,则需要读取请求字节.在这种情况下,请求不是可通过名称-值对访问的表单数据,因此您不能使用 Request.Form 集合.我建议调查 BinaryRead 方法.
读取发布的数据并转换为字符串:
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
希望有帮助.
更新 #1:
使用 JScript
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
}
这篇关于使用经典 ASP 访问请求正文?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!