2016-05-12 2 views
1

Problème: j'obtiens la sortie d'erreur suivante de If Err.Number <> 0 Then check;MSXML ServerXMLHTTP- service Web appelant

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 

Qu'est-ce que je manque ici?

+0

Vous voulez 'Response.write (objHttpRequest.ResponseXML.xml)' – Lankymart

+0

Non, Cela aussi ne fonctionne pas, j'essaie même avec ResponseText. rien ne fonctionne – Ramakrishnan

+0

Trop vite c'était un problème le principal est l'ordre que vous appelez 'Open()', j'ai posté [une réponse] (http://stackoverflow.com/a/37186423/692942) qui explique plus loin. – Lankymart

Répondre

1

Le problème est exactement comme décrit dans l'erreur, vous essayez de définir des en-têtes de demande sans d'abord appeler Open(). Il vous manque également la méthode Send() pour envoyer la demande avant qu'une réponse puisse être reçue.

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 

Vous voulez également ResponseXML.Xml ou vous recevrez un

Microsoft VBScript runtime error: Type mismatch

parce que vous essayez de sortir l'objet non la propriété Xml qui contient la représentation de chaîne XML.

+0

J'ai même essayé ça aussi. sans espoir. – Ramakrishnan

+0

@Ramakrishnan Vous obtenez la même erreur? – Lankymart

+1

@Ramakrishnan Désolé réalisé que j'ai manqué le 'Send()' qui causera aussi le problème dû au 'Response 'n'étant pas disponible jusqu'à ce que le' Request' soit envoyé. – Lankymart