如何访问客户端发布到我的经典ASP服务器的内容? 我知道有Request.Forms变量,但客户端的请求不是使用Form。 客户端请求的正文只是使用标准POST语句创建的字符串。 感谢
答案 0 :(得分:20)
如果客户端发送的请求的内容类型不是表单数据,则需要读取请求字节。在这种情况下,请求不是可通过名称 - 值对访问的表单数据,因此您无法使用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
}
答案 1 :(得分:2)
要获取JSON字符串值,只需使用CStr(Request.Form)
努力享受。
答案 2 :(得分:1)
在Classic ASP中,Request.Form
是用于通过POST发送的任何数据的集合。
为了完整起见,我将补充说Request.QueryString
是用于通过GET /查询字符串发送的任何数据的集合。
基于上述情况我猜测即使客户端不是Web浏览器,也应该填充Request.Form集合。
注意:所有这些都假设正在发送的数据本质上是文本的,并且没有发送二进制上载(例如图片或文件)。如果这是一个不正确的假设,请更新您的问题正文。
要测试,请写出原始表单数据并查看您拥有的内容 - 以下内容:
Response.Write(Request.Form)
使用常规网页会输出类似
的内容field=value&field2=value2
如果你沿着这些方向得到了某些东西,那么你可以将它作为正确索引的参考。
如果你没有得到类似的东西,请用你尝试的和你得到的东西更新你的问题。