HTTPS Download File
Re: HTTPS Download File
Zeig mal deinen Beispielcode, der nicht funktioniert.
Re: HTTPS Download File
Hallo Zuerst ermittle ich die Größe der Datei.
Im Code hab ich von HTTP auf HTTPS ersetzt.
PB 5.24
Nach Suche im Forum bin ich heute auf eine andere Funktion gestoßen.
Die alte hat über Jahre funktioniert.
Bin jetzt Happy, das es wieder läuft.
Möchte sie nicht vorenthalten.
Im Code hab ich von HTTP auf HTTPS ersetzt.
PB 5.24
Code: Alles auswählen
rocedure.s GetQueryInfo(hHttpRequest.l, iInfoLevel.l)
lBufferLength.l=0
lBufferLength = 1024
sBuffer.s=Space(lBufferLength)
HttpQueryInfo_(hHttpRequest, iInfoLevel, sBuffer, @lBufferLength, 0)
; Debug sBuffer
ProcedureReturn Left(sBuffer, lBufferLength)
EndProcedure
Procedure _CheckUrlFileSize(URL.s)
res.s=""
tmp.s=""
OpenType.b=1
INTERNET_FLAG_RELOAD.l = $80000000
INTERNET_DEFAULT_HTTP_PORT.l = 80
INTERNET_SERVICE_HTTP.l = 3
HTTP_QUERY_STATUS_CODE.l = 19
HTTP_QUERY_STATUS_TEXT.l = 20
HTTP_QUERY_RAW_HEADERS.l = 21
HTTP_QUERY_RAW_HEADERS_CRLF.l = 22
hInet = InternetOpen_("", OpenType, #Null, #Null, 0)
hURL = InternetOpenUrl_(hInet, URL, #Null, 0, INTERNET_FLAG_RELOAD, 0)
;get Filesize
domain.s = ReplaceString(Left(URL,(FindString(URL, "/",8) - 1)),"https://","")
hInetCon = InternetConnect_(hInet,domain, INTERNET_DEFAULT_HTTP_PORT, #Null, #Null, INTERNET_SERVICE_HTTP, 0, 0)
If hInetCon > 0
hHttpOpenRequest = HttpOpenRequest_(hInetCon, "HEAD", ReplaceString(URL,"https://"+domain+"/",""), "", #Null, 0, INTERNET_FLAG_RELOAD, 0)
If hHttpOpenRequest > 0
iretval = HttpSendRequest_(hHttpOpenRequest, #Null, 0, 0, 0)
If iretval > 0
tmp = GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_STATUS_CODE)
If Trim(tmp) = "200"
tmp = GetQueryInfo(hHttpOpenRequest, HTTP_QUERY_RAW_HEADERS_CRLF)
; Debug tmp
If FindString(tmp,"Content-Length:",1)>0
ii.l=FindString(tmp, "Content-Length:",1) + Len("Content-Length:")
tmp = Mid(tmp, ii, Len(tmp)-ii)
myMax = Val(Trim(tmp))
EndIf
EndIf
EndIf
EndIf
EndIf
InternetCloseHandle_(hURL)
InternetCloseHandle_(hInet)
ProcedureReturn myMax
EndProcedure
Debug _CheckUrlFileSize("https://www.rsbasic.de/downloads/live_backup_system.zip")
Die alte hat über Jahre funktioniert.
Bin jetzt Happy, das es wieder läuft.
Möchte sie nicht vorenthalten.
Code: Alles auswählen
Procedure _CheckUrlFileSizenew(URL.s)
FileSize=0
FileSizet.s=Space(20)
OpenType.b=1
INTERNET_FLAG_RELOAD.l = $80000000
INTERNET_DEFAULT_HTTP_PORT.l = 80
INTERNET_SERVICE_HTTP.l = 3
HTTP_QUERY_STATUS_CODE.l = 19
HTTP_QUERY_STATUS_TEXT.l = 20
HTTP_QUERY_RAW_HEADERS.l = 21
HTTP_QUERY_RAW_HEADERS_CRLF.l = 22
hInet = InternetOpen_("", OpenType, #Null, #Null, 0)
; Debug hInet
hURL = InternetOpenUrl_(hInet, URL, #Null, 0, 0, 0)
StateCode =Val( GetQueryInfo(hURL, #HTTP_QUERY_STATUS_CODE) )
; Debug StateCode
If StateCode =200
Size=Len(FileSizet)
#HTTP_QUERY_CONTENT_LENGTH=5
HttpQueryInfo_(hURL,#HTTP_QUERY_CONTENT_LENGTH,@FileSizet,@Size,#Null)
FileSize=Val(FileSizet)
; Debug FileSize
EndIf
InternetCloseHandle_(hURL)
InternetCloseHandle_(hInet)
ProcedureReturn FileSize
EndProcedure
debug _CheckUrlFileSizenew("https://www.rsbasic.de/downloads/live_backup_system.zip")
Re: HTTPS Download File
Hallo
Tests ergaben, mit Windows XP funktioniert der Beispielcode nicht.
Windows 7 und größer läufts.
Gibt es eine Möglichkeit das es auf Windows XP funktioniert ?
Tests ergaben, mit Windows XP funktioniert der Beispielcode nicht.
Windows 7 und größer läufts.
Gibt es eine Möglichkeit das es auf Windows XP funktioniert ?
Code: Alles auswählen
InitNetwork()
If ReceiveHTTPFile("https://www.rsbasic.de/downloads/live_backup_system.zip", "D:\live_backup_system.zip")
Debug "Success"
Else
Debug "Failed"
EndIf
Re: HTTPS Download File
Das ist komisch, dass die selbe Funktion unter XP nicht funktioniert. Ich teste gleich mal in der VM.
Re: HTTPS Download File
Das kann ich bestätigen. Der Download schlägt fehl. Anscheinend arbeitet die Funktion beim HTTPS-Protokoll unter XP anders.
Das Problem besteht bei URLDownloadToFile_() ebenfalls. Ich habe es auch mit einer älteren PB-Version (5.31) getestet.
Aber da XP schon ziemlich alt ist, wäre das auch nicht so schlimm, wenn du XP nicht unterstützen würdest.
Das Problem besteht bei URLDownloadToFile_() ebenfalls. Ich habe es auch mit einer älteren PB-Version (5.31) getestet.
Aber da XP schon ziemlich alt ist, wäre das auch nicht so schlimm, wenn du XP nicht unterstützen würdest.
Re: HTTPS Download File
Windows XP unterstützt bei SSL-Verbindungen keine Elliptische-Kurven-Kryptografie. Diese wird inzwischen aber von vielen Webservern gefordert.
Siehe: Why can't Windows XP handle newer SSL certificate versions?
Siehe: Why can't Windows XP handle newer SSL certificate versions?
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Re: HTTPS Download File
Danke Sicro für diese Information, gut zu wissen.
Re: HTTPS Download File
Danke für die Infos. Das ist natülich Mist.
Gibt es eine Möglichkeit durch eine externe .dll oder lib eine solche Unterstützung hinzu zu bekommen ?
Grüße
Lite
Gibt es eine Möglichkeit durch eine externe .dll oder lib eine solche Unterstützung hinzu zu bekommen ?
Grüße
Lite
Re: HTTPS Download File
Ich kenne keine Lib oder DLL, die damit funktioniert. Ich habe mit dem Code GetHTTPFile von HeX0R getestet. Neuer als XP funktioniert, unter XP fehlgeschlagen.
Ich habe per VBS mit dem Objekt Microsoft.XMLHTTP versucht, die Datei herunterzuladen. Neuer als XP funktioniert, unter XP fehlgeschlagen.
Das Problem liegt nicht am Code, sondern am System dahinter. Wenn es möglich ist, müsstest du die fehlende Funktion (Elliptische-Kurven-Kryptografie) nachträglich installieren ( https://github.com/argp/ecc-lib-win32 ) oder einen Server ohne HTTPS für den Download bereitstellen.
Aber warum ist ein über 16 Jahre altes Betriebssystem XP für dich so wichtig?
Ich habe per VBS mit dem Objekt Microsoft.XMLHTTP versucht, die Datei herunterzuladen. Neuer als XP funktioniert, unter XP fehlgeschlagen.
Das Problem liegt nicht am Code, sondern am System dahinter. Wenn es möglich ist, müsstest du die fehlende Funktion (Elliptische-Kurven-Kryptografie) nachträglich installieren ( https://github.com/argp/ecc-lib-win32 ) oder einen Server ohne HTTPS für den Download bereitstellen.
Aber warum ist ein über 16 Jahre altes Betriebssystem XP für dich so wichtig?
Re: HTTPS Download File
Ich kenne eine Menge Betriebe, die an ihrem geliebten XP festhalten... Da wird der einst angeschaffte RechnerRSBasic hat geschrieben:Aber warum ist ein über 16 Jahre altes Betriebssystem XP für dich so wichtig?
solange benutzt bis der absolut nicht mehr reparabel ist
Es sind meist kleinere, die ihre Buchhaltung oder andere Geschäftstätigkeiten noch selbst machen.
Auch "ältere" (jenseits der 60) Kunden lassen ihre Rechner noch mit XP laufen, weil sie beinahe schon "Angst" haben was
neues lernen zu müssen.
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom