【发布时间】:2016-01-26 19:38:28
【问题描述】:
我正在用 VBScript 中的 JSON 正文发出服务器端 HTTP 请求,如下所示:
Set oXMLHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oXMLHttp.open cMethod, cAPIURL, False, cUser, cPassword
oXMLHttp.setRequestHeader "Content-Type", "application/json"
oXMLHttp.send(cData)
cReturn = oXMLHttp.responseText
Set oXMLHttp = Nothing
我调用的服务自然希望内容类型为application/json。如您所见,我将上面的请求标头设置为这样。
问题是MSXML2.ServerXMLHTTP 会将一个字符集附加到我将内容类型设置为的任何内容(我找不到此行为的文档),默认值似乎是 UTF-8。所以最后,头部被发送为application/json; Charset=UTF-8,这是Web服务不喜欢的。
奇怪的是,我可以用setRequestHeader 显式设置一个字符集,甚至是一个无意义的字符集,然后MSXML2.ServerXMLHTTP 将不理会标题。比如……
oXMLHttp.setRequestHeader "Content-Type", "application/json; Charset=FOO"
工作正常,保持不变。如何阻止MSXML2.ServerXMLHTTP 更改内容类型?
编辑:我发现 MSXML2.ServerXMLHTTP 6.0 没有表现出这种行为,至少在默认情况下是这样。但我仍然想看看是否有解决方案,因为我不确定在需要安装此应用程序的地方是否可用。
Set oXMLHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
【问题讨论】:
标签: vbscript asp-classic http-headers