我正在尝试解析包含“\ n”和“\ t”字符的POST请求,但只要我使用Request.Form
来操作数据,这些字符就不再存在了。我使用Wireshark确认字符在POST中。
有人可以帮忙吗?
以下是一些可以重现问题的代码:
POST:
str = "accountRequest=<NewUser>" & vbLf & _
"Hello" & vbTab & "World" & vbLf & _
"</NewUser>"
Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
objHTTP.open "POST", "service.asp", False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send str
response.Write(objHTTP.responseText)
Set objHTTP = Nothing
service.asp:
function w (str)
response.Write(str & "<br>")
end function
str = request.Form("accountRequest")
w(str)
w("Tabs: "& InStr(str,vbTab))
w("Lines: "& InStr(str,vbLf))
输出:
HelloWorld
Tabs: 0
Lines: 0
答案 0 :(得分:1)
最后发现,如果经典ASP Request.Form
方法采用“\ t”格式(与URL编码相对),则不会保留标签。但是,PHP的$_POST
确实如此,ASP.NET请求方法也是如此。
答案 1 :(得分:0)
如果您要做的就是为通过查询字符串传递的数据提供分隔符,那么我会尝试使用比制表符和新行更具体的字符。
|历史上曾经被广泛用于这样的情况 我相信taht#是另一个通过查询字符串而没有太多问题的值。
我个人而言,不喜欢依赖于能够从字符串值中选择Tab和NewLine。在这里和那里通过时,在某些情况下太容易迷路。
发送前请执行此操作:
str = str.replace(VbTab,"#")
str = str.replace(VbLf,"|")
...然后在你的目标页面上反复一次,它应该可以正常工作。