WinHttp.WinHttpRequest Fehlermeldung Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

effel
Posts: 51
Joined: 16 Jan 2018, 13:34

WinHttp.WinHttpRequest Fehlermeldung

15 Feb 2018, 06:39

hallo ahk gemeinde,
ich nutze statt UrlDownloadToFile eine ...ToVar variante. meine internetverbindung ist ab und zu schlecht bis nicht vorhanden, weil ich meine daten via hotspot vom handy bekomme.

die fehlermeldung klicke ich mit folgendem extra laufenden script immer erfolgreich weg.

meine frage lautet nun, ob ich im script evt. diese fehlermeldung (errorcode?) vorher auffangen kann, sodass sie erst garnicht erscheint, anstatt sie weg zu klicken
start:
WinWait, anzeigenbörse.ahk, Error: 0x800
IfWinNotActive, anzeigenbörse.ahk, Error: 0x800, WinActivate, anzeigenbörse.ahk, Error: 0x800
WinWaitActive, anzeigenbörse.ahk, Error: 0x800
Send, {ENTER}
sleep, 1000
goto start

Code: Select all

---------------------------
anzeigenbörse.ahk
---------------------------
Error:  0x80072EE2 - 
Source:		WinHttp.WinHttpRequest
Description:	Das Zeitlimit für den Vorgang wurde erreicht.


HelpFile:		(null)
HelpContext:	0

Specifically: WaitForResponse

	Line#
	042: Sleep,1000
	043: ToolTip
	044: Goto,start
	045: }
	048: whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	049: whr.Open("GET", "https://www.suchwebseite.de", true)  
	050: whr.Send()  
--->	051: whr.WaitForResponse()  
	052: needle_2 := whr.ResponseText
	055: needle_1 = <div class="field field--name-title-field field--type-text field--label-hidden"><div class="field-items"><div class="field-item even"><a
	056: Loop,parse,needle_2,
,

	057: if RegExMatch(A_LoopField, needle_1 . "(.*)")  
	058: needle_3 .= A_LoopField . "

"  
	059: ergebnis_01 = <div class="field field--name-title-field field--type-text field--label-hidden"><div class="field-items"><div class="field-item even"><a href="
	060: ersetzen_01 = https://www.suchwebseite.de

Continue running the script?
---------------------------
Ja   Nein   
---------------------------
User avatar
nnnik
Posts: 3527
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: WinHttp.WinHttpRequest Fehlermeldung

15 Feb 2018, 06:58

Du kannst alle Fehlermeldungen in einem Try-Catch Block auffangen.

Code: Select all

Try {
	wasAuchImmerDenFehlerVerursacht()
} catch e{
	wirdAufgerufenWennDerFehlerPassiert()
}finally {
	wirdAuchAufgerufenWennImCatchBlockEinReturnSteht()
}
Msgbox wird auch sowieso aufgerufen

wasAuchImmerDenFehlerVerursacht() {
	throw exception( "Fail", -1 )
}

wirdAufgerufenWennDerFehlerPassiert() {
	Msgbox Fehler passiert
}
wirdAuchAufgerufenWennImCatchBlockEinReturnSteht() {
	Msgbox wird sowieso aufgerufen
}
Recommends AHK Studio
effel
Posts: 51
Joined: 16 Jan 2018, 13:34

Re: WinHttp.WinHttpRequest Fehlermeldung

15 Feb 2018, 07:16

hallo nnnik, danke für die schnelle antwort, aber ich verstehe leider nicht wie ich mit dem code umgehen soll. wird er in dem arbeitsscript eingebunden? oder läuft er als extra script?

was muss ich wo eintragen?

sorry aber ich hab wie du sicher schon bemerkt hast nur rudimentäres halbwissen.
User avatar
nnnik
Posts: 3527
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: WinHttp.WinHttpRequest Fehlermeldung

15 Feb 2018, 07:56

Alle Fehler von Code der in einem Try Block steht führen dazu, dass der dazugehörige catch block aufgerufen wird.
Der Code kommt in das Script welches den Fehler erzeugt.
Da ich deinen Code nicht habe kann ich es dir nicht an deinem code zeigen.

Am besten liest du dir mal die Hilfe zu try und catch durch.
Recommends AHK Studio
effel
Posts: 51
Joined: 16 Jan 2018, 13:34

Re: WinHttp.WinHttpRequest Fehlermeldung  Topic is solved

16 Feb 2018, 15:01

danke nnnik, damit funktioniert es

Code: Select all

/*
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "https://www.webseite.de", true)
whr.Send()
whr.WaitForResponse()
webseiteHTML := whr.ResponseText
*/

Try {
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "https://www.webseite.de", true)
whr.Send()
whr.WaitForResponse()
webseiteHTML := whr.ResponseText
}
catch e {
fileappend, %TimeStamp%`n, ____fehler.txt
soundbeep, 2000
msgbox, 0, Fehler, Keine Internetverbindung, 5
reload
}
garry
Posts: 1567
Joined: 22 Dec 2013, 12:50

Re: WinHttp.WinHttpRequest Fehlermeldung

17 Feb 2018, 11:32

hello effel
hier ein Beispiel damit die richtige Fehlermeldung erfasst wird im logfile

Code: Select all

;f1:="https://www.websitenotexist.de"
f1:="http://50.7.70.58:8708/played.html"

xx:=ComObjCreate("WinHttp.WinHttpRequest.5.1")
;- es werden keine Fehler angezeigt -----------
;ComObjError(false)
;xx.Silent := True    ;- script failure = off
;---------------------------------------------
xx.SetTimeouts(500,500,500,500)
;xx.SetTimeouts(1,1,1,1)              ;<- Fehler = The operation timed out
gosub,aa1
return

aa1:
try{
    xx.Open("GET",f1)
    xx.Send()
    aac=
    aac:=xx.ResponseText
} catch e {
    xxx:=e.Message
    msgbox, 262208,ERROR,Error=`n%xxx%`n------------------------------------------`n
    return
    }
msgbox, 262208,%f1%,%aac%
return
effel
Posts: 51
Joined: 16 Jan 2018, 13:34

Re: WinHttp.WinHttpRequest Fehlermeldung

17 Feb 2018, 17:59

@garry
cool, sobald ich die internetverbindung trenne zeigt das script den fehlercode an

Code: Select all

---------------------------
Fehler
---------------------------
Keine Internetverbindung
Error=0x80072EE7 - 
Source:		WinHttp.WinHttpRequest
Description:	Der Servername oder die Serveradresse konnte nicht verarbeitet werden.


HelpFile:		(null)
HelpContext:	0
---------------------------
OK   
---------------------------

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 8 guests