2016-05-12 27 views
1

Problem: Ich erhalte die folgende Fehlerausgabe von If Err.Number <> 0 Then check;MSXML ServerXMLHTTP- Aufruf des Webdienstes

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

Code:

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 

Was bin ich hier?

+0

Sie wollen 'Response.write (objHttpRequest.ResponseXML.xml)' – Lankymart

+0

Nein, das funktioniert auch nicht, ich versuche sogar mit ResponseText. nichts funktioniert – Ramakrishnan

+0

Zu schnell, das war ein Problem, das wichtigste ist die Reihenfolge, die Sie aufrufen, öffnen() ', habe ich [eine Antwort] (http://stackoverflow.com/a/37186423/692942), die erklärt es weiter. – Lankymart

Antwort

1

Das Problem ist genau wie im Fehler beschrieben, Sie versuchen, Request Header ohne ersten Aufruf Open() zu setzen. Sie vermissen auch die Send() Methode, um die Anfrage zu senden, bevor eine Antwort empfangen werden kann.

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 

Sie wollen auch ResponseXML.Xml oder Sie werden eine

Microsoft VBScript runtime error: Type mismatch

erhalten, weil Sie das Objekt nicht die Xml Eigenschaft Ausgabe versuchen, die die XML-String-Darstellung enthält.

+0

Ich habe das sogar probiert. keine Hoffnung. – Ramakrishnan

+0

@Ramakrishnan Sie erhalten den gleichen Fehler? – Lankymart

+1

@Ramakrishnan Tut mir leid, dass ich das 'Send()' verpasst habe, was auch dazu führen wird, dass das Problem aufgrund der 'Response' nicht verfügbar ist, bis 'Request' gesendet wird. – Lankymart