Hallo,
für alle, die diesen Thread mitgelesen haben, hier die Lösung, die bei mir funktioniert und zun Einsatz kommt:
Allgemeine Änderungen:
Global connected As Boolean
Global HTP As New WinHttp.WinHttpRequest
' Library WinHttp
' C:\WINDOWS\System32\winhttp.dll
' Microsoft WinHTTP Services, version 5.1
Global STR As New ADODB.stream
' Library ADODB
' C:\Program Files\Common Files\System\ADO\msado25.tlb
' Microsoft ActiveX Data Objects 2.5 Library
' Diese beiden Libraries müssen über Tools / References eingebunden werden.
' Standart XP Microsoft ActiveX Data Objects 2.1 reicht nicht aus, da sie Steam
' Methode erst mit 2.5 implementiert wurde.
' Die aktuelle Version kann bei Microsoft mit dem Suchbegriff MDAC zum Download
' gefunden werden.
' Einrichten eines Cookie / Verbindung mit User Id und Passwort auf den Login Server
Private Sub wCon()
HTP.Open "GET", "https://www.firma.com/auth.cgi?userid=" & Susr & "&passwort=" _
& Spwd, False
' Es muss HTTPS sein. Mit HTTP geht es nicht!
HTP.Send
Do
DoEvents
HTP.WaitForResponse 100
Loop While InStr(UCase(HTP.ResponseText), "</HTML>") = 0
connected = (FZ.title(HTP.ResponseText) = "Web Login Verified")
' Der Text "Web Login Verified" ist die Titelzeile der HTML Seite, die man
' sieht, wenn man sich auf unserem Server erfolgreich einloggt.
If Not connected Then MsgBox "WSL connection not established.", vbCritical + _
vbOKOnly, FZ.title(HTP.ResponseText)
End Sub Auslesen von HTM Text
Function wGet(sURL As String) As String
If Not connected Then wCon
If Not connected Then Exit Function
HTP.Open "GET", sURL, False
HTP.Send
Do
DoEvents
HTP.WaitForResponse 100
Loop While InStr(UCase(HTP.ResponseText), "</HTML>") = 0
wGet = HTP.ResponseText
End Function Empfangen einer Binärdatei
ACHTUNG, in meinem Fall sende ich als sURL www.firma.com/send.cgi/filename und der Server sendet die Datei selbstständig.
Function wDownload(sURL As String, sFile As String) As Long
Dim i As Long
If Not connected Then wCon
If Not connected Then Exit Function
HTP.Open "GET", sURL, False
HTP.Send
Do
i = Len(HTP.ResponseText)
DoEvents
HTP.WaitForResponse 1000
Loop Until i = Len(HTP.ResponseText)
wDownload = i ' << gibt die byte Anzahl wieder, die empfangen wurde.
If FZ.title(HTP.ResponseText) = "File Error" Then
wDownload = 0
Exit Function
End If
STR.Mode = adModeReadWrite
STR.Type = adTypeBinary
STR.Open
STR.Write HTP.ResponseBody
STR.SaveToFile sFile, adSaveCreateOverWrite
STR.Close
End Function |