Hallo alle,
Der Präfix passt nicht ganz, meine Frage bezieht sich nicht auf VB sondern auf VBS. Ich hatte VBS ehrlich gesagt Jahrelang sträflich ignoriert (Ihh, Basic), aber in letzter Zeit doch irgendwie ein bisschen für mich entdeckt. Um kleinere Dinge unter Windows zu automatisieren ohne auf eine Konsole beschränkt zu sein (BAT/CMD) und ohne nen Compiler oder Interpreter aufsetzen zu müssen ist es manchmal nicht schlecht. Die Sprache selbst ist zwar 'ne ziemliche Katastrophe, aber ich will ja keine großen Softwareprojekte entwickeln.
Zu meiner Frage: Ich will in einem VBS in bestimmten Zeitabständen Aktionen ausführen und deren Erfolg an einen Webserver melden. Ersteres läuft schon länger, für zweiteres will ich einfach ein kleines PHP-Script abrufen und den Status per GET übermitteln. Was ich also brauche ist eine einfache wget-Funktionalität in VBS. Dazu habe ich 'nen Snippet gefunden, der sich bei mir, da ich die Antwort des Servers nicht benötige, vereinfacht zu
Das funktioniert auch wunderbar. Aber jetzt kommts: wenn ich in dem gleichen Script einen zweiten Request ausführen will, dann wird dieser nicht ausgeführt. Das Minimalbeispiel dazu wäre:
Hier wird nur der erste ausgeführt. Ich habe auch schon probiert vor dem zweiten Request das objXMLHTTP neu anzulegen (durch einen zweiten CreateObject-Aufruf mit dem obligatorischen Set auf Nothing vorher), das geht eben so wenig. Ich bekomme in beiden Fällen als objXMLHTTP.Status eine 200, als ob alles ok wäre.
Ein Timing-Problem kann es eigentlich nicht sein, dass false nach dem open sorgt dafür, dass der Request nicht asynchron ausgeführt wird, der open-Aufruf blockiert also bis er die Antwort hat.
Hat zufällig jemand eine Idee woran das liegen könnte oder wie ich es anders lösen könnte? Was VBS angeht bin ich ein ziemlicher Noob.
Der Präfix passt nicht ganz, meine Frage bezieht sich nicht auf VB sondern auf VBS. Ich hatte VBS ehrlich gesagt Jahrelang sträflich ignoriert (Ihh, Basic), aber in letzter Zeit doch irgendwie ein bisschen für mich entdeckt. Um kleinere Dinge unter Windows zu automatisieren ohne auf eine Konsole beschränkt zu sein (BAT/CMD) und ohne nen Compiler oder Interpreter aufsetzen zu müssen ist es manchmal nicht schlecht. Die Sprache selbst ist zwar 'ne ziemliche Katastrophe, aber ich will ja keine großen Softwareprojekte entwickeln.
Zu meiner Frage: Ich will in einem VBS in bestimmten Zeitabständen Aktionen ausführen und deren Erfolg an einen Webserver melden. Ersteres läuft schon länger, für zweiteres will ich einfach ein kleines PHP-Script abrufen und den Status per GET übermitteln. Was ich also brauche ist eine einfache wget-Funktionalität in VBS. Dazu habe ich 'nen Snippet gefunden, der sich bei mir, da ich die Antwort des Servers nicht benötige, vereinfacht zu
Code:
strFileURL = "https://example.org/ping.php?status=123"
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
Das funktioniert auch wunderbar. Aber jetzt kommts: wenn ich in dem gleichen Script einen zweiten Request ausführen will, dann wird dieser nicht ausgeführt. Das Minimalbeispiel dazu wäre:
Code:
strFileURL = "https://example.org/ping.php?status=123"
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
WScript.Sleep 10000
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
Hier wird nur der erste ausgeführt. Ich habe auch schon probiert vor dem zweiten Request das objXMLHTTP neu anzulegen (durch einen zweiten CreateObject-Aufruf mit dem obligatorischen Set auf Nothing vorher), das geht eben so wenig. Ich bekomme in beiden Fällen als objXMLHTTP.Status eine 200, als ob alles ok wäre.
Ein Timing-Problem kann es eigentlich nicht sein, dass false nach dem open sorgt dafür, dass der Request nicht asynchron ausgeführt wird, der open-Aufruf blockiert also bis er die Antwort hat.
Hat zufällig jemand eine Idee woran das liegen könnte oder wie ich es anders lösen könnte? Was VBS angeht bin ich ein ziemlicher Noob.