Ein kleines UDF für WinHTTP, das ich für ein kurze einführung in meinem Video Tut benutz habe.
Leider bekomm ich bei dem COM keine Events zum laufen und allgemein haben die Funktionen keine sonderlich guten rückgabe Werte.
Spoiler anzeigen
Global Const Enum $WinHttpRequestOption_UserAgentString, _
$WinHttpRequestOption_URL, _
$WinHttpRequestOption_URLCodePage, _
$WinHttpRequestOption_EscapePercentInURL, _
$WinHttpRequestOption_SslErrorIgnoreFlags, _
$WinHttpRequestOption_SelectCertificate, _
$WinHttpRequestOption_EnableRedirects, _
$WinHttpRequestOption_UrlEscapeDisable, _
$WinHttpRequestOption_UrlEscapeDisableQuery, _
$WinHttpRequestOption_SecureProtocols, _
$WinHttpRequestOption_EnableTracing, _
$WinHttpRequestOption_RevertImpersonationOverSsl, _
$WinHttpRequestOption_EnableHttpsToHttpRedirects, _
$WinHttpRequestOption_EnablePassportAuthentication, _
$WinHttpRequestOption_MaxAutomaticRedirects, _
$WinHttpRequestOption_MaxResponseHeaderSize, _
$WinHttpRequestOption_MaxResponseDrainSize, _
$WinHttpRequestOption_EnableHttp1_1, _
$WinHttpRequestOption_EnableCertificateRevocationCheck
ConsoleWrite ( $o.option ( $WinHttpRequestOption_UserAgentString ) )
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _WinHTTPOpen ( $sMethod, $sUrl, $iAsync = 0)
If $sMethod <> 'GET' and $sMethod <> 'POST' and $sMethod <> 'HEADER' and $sMethod <> 'PUT' Then
Return SetError (1,0,0)
EndIf
$sMethod = StringUpper ($sMethod)
if not IsString ( $sUrl ) Then Return SetError (2,0,0)
$oWinHTTP = ObjCreate ('WinHttp.WinHttpRequest.5.1')
if @error Then
Return SetError (3,0,0)
EndIf
if $oWinHTTP.Open ( $sMethod, $sUrl, $iAsync) <> '' Then
Return SetError (4,0,0)
EndIf
Return $oWinHTTP
EndFunc
Func _WinHTTPStatus ( ByRef $oWinHTTP , $iMode = 1)
if not __WinHTTPisWinHTTPObj ($oWinHTTP) Then Return SetError (1,0,0)
Switch $iMode
case 1
Local $avStatus[2] = [ $oWinHTTP.status, $oWinHTTP.statustext]
Return $avStatus
case 2
Return $oWinHTTP.status
case 3
Return $oWinHTTP.statustext
case Else
Return SetError (2,0,0)
EndSwitch
EndFunc
Func _WinHTTPResponse ( ByRef $oWinHTTP, $iTimeout = -1)
if not __WinHTTPisWinHTTPObj ($oWinHTTP) Then Return SetError (1,0,0)
Local $vResponseText = $oWinHTTP.ResponseText
if $vResponseText <> '' Then
Return $vResponseText
Else
if not $oWinHTTP.WaitForResponse ( $iTimeout ) Then
Return SetError (2,0,0)
Else
Return $oWinHTTP.ResponseText
EndIf
EndIf
EndFunc
Func _WinHTTPSend (ByRef $oWinHTTP, $vData = Default)
if not __WinHTTPisWinHTTPObj ($oWinHTTP) Then Return SetError (1,0,0)
if $vData <> Default then
$oWinHTTP.Send ($vData)
Else
$oWinHTTP.Send ()
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit]func __WinHTTPisWinHTTPObj ($oObject)
if IsObj ($oObject) and ObjName ($oObject) == 'IWinHttpRequest' Then
Return 1
Else
Return 0
EndIf
EndFunc
func __WinHTTPResponse ($oObject)
If not __WinHTTPisWinHTTPObj ( $oObject ) Then Return 0
If Execute ("$oObject.GetAllResponseHeaders()") <> '' Then
Return 1
Else
Return 0
EndIf
EndFunc