MSXML2.ServerXMLHTTP 的默认 Content-Type 是什么?

问题描述 投票:0回答:2

在我的上一个问题中,我不小心发送了带有

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
类的默认内容类型是什么?

当发送类使用默认内容类型时,我的信息在哪里?

asp-classic content-type serverxmlhttp
2个回答
4
投票

仅当 POST 的内容类型为“application/x-www-form-urlencoded”时,ASP 才会填充表单数组。一般来说,ServerXMLHTTP 不会设置内容类型标头,因此如果您不手动设置,则不会发送内容类型标头。

一个例外是您传递 XML 文档作为要发送的参数,在这种情况下,ServerXMLHTTP 会将内容类型设置为“text/xml; charset=UTF-8”。


0
投票

通过查看可以看到使用的是什么content-type

Request.ServerVariables("HTTP_Content_Type")

在服务器端。如果不是“application/x-www-form-urlencoded” 服务器收到的完整数据可以通过

访问
Length = CLng(Request.ServerVariables("HTTP_Content_Length"))
YourCompleteData = Request.BinaryRead (Length)

顺便说一句,这是在 ASP 中处理“多部分/表单数据”的唯一方法。

© www.soinside.com 2019 - 2024. All rights reserved.