Gérer les Événements de WinHttpRequest
Un programme que j'utilise fonctionne .Les scripts VBS
Donc, dans VBScript comment pouvez-vous traiter la OnResponseFinished événement pour un WinHttpRequest objet?
Set oHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
oHTTP.Open "GET", "http://www.google.com", True
oHTTP.Send
Où que vous capable de faire ce travail? Je n'ai pas trouvé de moyen à côté de celui avec
Il y a une question connexe, où la liaison à WinHttpRequest événements à l'aide de WScript.CreateObject() provoque une erreur de protection générale. Les détails peuvent être trouvés ici stackoverflow.com/questions/27407533/...
Error GoTo <label>
. Aucune réponse vraiment résoudre le problème.Il y a une question connexe, où la liaison à WinHttpRequest événements à l'aide de WScript.CreateObject() provoque une erreur de protection générale. Les détails peuvent être trouvés ici stackoverflow.com/questions/27407533/...
OriginalL'auteur Carlos Gil | 2011-02-26
Vous devez vous connecter pour publier un commentaire.
J'ai essayé d'obtenir un peu de code exécuté lorsque l'winhttp réponse vient (à l'aide de VBScript à l'intérieur de fichier HTA). Vous pouvez envisager de mettre votre code d'événement juste après l'envoi. En utilisant le code suivant, l'interface utilisateur de ne pas se bloquer lors de l'attente de la réponse:
Ce qui semble être le même que synchrone winhttp pour les fichiers de script, qui peut être ce que vous cherchez. Donc, la seule différence peut-être remarqué lors de l'utilisation d'une interface utilisateur.
OriginalL'auteur Eduardo Poço
Modifier le troisième paramater dans l'appel à la
Open
méthode pourfalse
. Ensuite, placez le code, vous avez enOnResponseFinished
après l'appel à envoyer.Vous hébergez un moteur de script?
Eh bien, pas moi. Un programme que j'utilise des charges .Les scripts VBS comme addons.
OriginalL'auteur AnthonyWJones
Utilisation WScript CreateObject pas construit en un pour un gestionnaire d'événement.
OriginalL'auteur Stephen Quan
Je vais vous avouer que sa n'est pas une grande réponse, mais la façon habituelle de s'inscrire VBScript événements est d'utiliser le
GetRef
fonction pour obtenir une référence pour le gestionnaire d'événements, par exemple avec unMSXML2.XMLHTTP
objet:Le problème est, je l'ai essayé pour votre code, c'est à dire
et ça ne fonctionne pas, l'obtention de l'erreur
mais peut-être cela peut vous donner un point de départ , ou peut-être vous pouvez utiliser le
MSXML2
de la bibliothèque à la place?Juste la mise à jour de cette réponse avec la autres façon de gérer les événements de COM - utiliser le deuxième paramètre de la
CreateObject
fonction qui vous permet de spécifier la fonction de préfixe qui relie les fonctions des objets, par exemplemalheureusement, cela ne fonctionne pas non plus - il faut que les
IWinHttpRequestEvents
interface est inaccessibleIWinHttpRequestEvents
(voir ici) de l'interface et je ne pense pas qu'il y a moyen d'en VBScript pour utiliser un objet de l'interface de rechangeLe problème est le XmlHttp OnReadyStateChange est spécialement conçu pour recevoir le pointeur de fonction à partir d'un environnement de script. Alors que OnResponseFinished est un standard COM Cas, vous ne pouvez pas assigner comme une propriété.
Merci. J'utilise cette méthode pour "MSXML2.XMLHTTP". Dans mon cas, ce n'est pas un déclarant point; c'est là où je me suis coincé.
OriginalL'auteur
J'ai vérifié le Registre de Windows et il semble y avoir un certain nombre de Microsoft objets qui n'ont presque la même chose:
Ce qui fonctionne pour moi est Microsoft.ServerXMLHTTP qui permet le réglage de la onreadystatechange en VBScript. Le "MSXML2.ServerXMLHTTP" poignées de rediriger les sites web (par ex. google.com) qui en fait un meilleur choix "de Microsoft.XMLHTTP".
OriginalL'auteur Stephen Quan
Elle n'a besoin semble être possible en fonction de cette (aller à des remarques) vous ne pouvez accéder à l'état d'erreur avec
Err
. La documentation de Microsoft est moche.OriginalL'auteur Michael-O
J'ai trouvé que je peux obtenir que cela fonctionne de manière Asynchrone à l'aide de la 'waitForResponse" avec le paramètre '0' pour le délai de la méthode comme un drapeau.
IE:
OriginalL'auteur timonippon