1

问题:我从If Err.Number <> 0 Then检查中得到以下错误输出;

Err.Number :-1072954818  
Err.Source :msxml6.dll  
Err.Source :This method cannot be called until the open method has been called.

代码:

dim objHttpRequest
dim gw_menu_request
dim HTTPMethod

HTTPMethod="POST"
Set objHttpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")    
gw_menu_request = "http://test.com?q=headerexpose/expose_headers/expose_json"       
objHttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
objHttpRequest.setRequestHeader "Content-Length", 0
objHttpRequest.open HTTPMethod, gw_menu_request, false          
Response.write(objHttpRequest.ResponseXML)

If Err.Number <> 0 Then 
  Response.Write "Err.Number :" & Err.Number  & "<br/>"
  Response.Write "Err.Source :" & Err.Source & "<br/>"
  Response.Write "Err.Source :" & Err.Description  & "<br/>"
  Response.Write "Err.File :" & Err.File & "<br/>"
End If

我在这里想念什么?

4

1 回答 1

2

问题与错误中描述的完全一样,您尝试设置请求标头而不首先调用Open(). 您还缺少在Send()收到响应之前发送请求的方法。

Dim objHttpRequest
Dim gw_menu_request
Dim HTTPMethod

HTTPMethod="POST"
Set objHttpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")    
gw_menu_request = "http://test.com?q=headerexpose/expose_headers/expose_json"
'Open request specifying method and URL to call
objHttpRequest.open HTTPMethod, gw_menu_request, False
'Set any HTTP headers needed before sending.      
objHttpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
objHttpRequest.setRequestHeader "Content-Length", 0
'Send the request
objHttpRequest.Send 
Response.write(objHttpRequest.ResponseXML.Xml)

If Err.Number <> 0 Then 
  Response.Write "Err.Number :" & Err.Number  & "<br/>"
  Response.Write "Err.Source :" & Err.Source & "<br/>"
  Response.Write "Err.Source :" & Err.Description  & "<br/>"
  Response.Write "Err.File :" & Err.File & "<br/>"
End If

你也想要ResponseXML.Xml或者你会收到一个

Microsoft VBScript 运行时错误:类型不匹配

因为您试图输出对象而不是Xml包含 XML 字符串表示的属性。

于 2016-05-12T12:07:30.233 回答