Page 1 of 1

WinHttp.WinHttpRequest Fehlermeldung

Posted: 15 Feb 2018, 06:39
by effel
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   
---------------------------

Re: WinHttp.WinHttpRequest Fehlermeldung

Posted: 15 Feb 2018, 06:58
by nnnik
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
}

Re: WinHttp.WinHttpRequest Fehlermeldung

Posted: 15 Feb 2018, 07:16
by effel
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.

Re: WinHttp.WinHttpRequest Fehlermeldung

Posted: 15 Feb 2018, 07:56
by nnnik
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.

Re: WinHttp.WinHttpRequest Fehlermeldung  Topic is solved

Posted: 16 Feb 2018, 15:01
by effel
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
}

Re: WinHttp.WinHttpRequest Fehlermeldung

Posted: 17 Feb 2018, 11:32
by garry
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

Re: WinHttp.WinHttpRequest Fehlermeldung

Posted: 17 Feb 2018, 17:59
by effel
@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   
---------------------------