在我的上一个问题中,我不小心发送了带有
text/xml
内容类型的令牌/值对,导致没有发送任何内容。 Tim C 对这个问题的洞察非常有帮助。再次感谢蒂姆!
回顾最初的发送代码,我现在意识到将
ServerXMLHTTP
的 Content-Type 设置为 text/xml
是最近添加的错误内容。我在问题中发布的发送代码如下所示:
url = "www.receivingwebsite.com\asp\receivingwebpage.asp"
information = "UserName=Colt&PassWord=Taylor&Data=100"
Set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "POST", url, false
xmlhttp.setRequestHeader "Content-Type", "text/xml"
xmlhttp.send information
实际发送代码确实是:
url = "www.receivingwebsite.com\asp\receivingwebpage.asp"
information = "UserName=Colt&PassWord=Taylor&Data=100"
Set xmlhttp = server.Createobject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "POST", url, false
xmlhttp.send information
...发送前不尝试设置内容类型。
不幸的是,最初导致我寻求帮助的问题仍然存在。我的接收经典 asp 页面无法看到
ServerXMLHTTP
对象发布的信息。该信息不在请求对象的 querystring
或 form
数组中。无论我做什么,我都找不到信息,但我知道它正在发送,因为当我将内容类型更改为 application/x-www-form-urlencoded
时,我可以在 request.form
数组中看到它。
那么
MSXML2.ServerXMLHTTP
类的默认内容类型是什么?
当发送类使用默认内容类型时,我的信息在哪里?
仅当 POST 的内容类型为“application/x-www-form-urlencoded”时,ASP 才会填充表单数组。一般来说,ServerXMLHTTP 不会设置内容类型标头,因此如果您不手动设置,则不会发送内容类型标头。
一个例外是您传递 XML 文档作为要发送的参数,在这种情况下,ServerXMLHTTP 会将内容类型设置为“text/xml; charset=UTF-8”。
通过查看可以看到使用的是什么content-type
Request.ServerVariables("HTTP_Content_Type")
在服务器端。如果不是“application/x-www-form-urlencoded” 服务器收到的完整数据可以通过
访问Length = CLng(Request.ServerVariables("HTTP_Content_Length"))
YourCompleteData = Request.BinaryRead (Length)
顺便说一句,这是在 ASP 中处理“多部分/表单数据”的唯一方法。