![]() |
THTTPClient unter Windows geht nicht richtig
Hi, ich habe folgendes Problem:
Delphi-Quellcode:
Der oben stehende Code sollte ein Bild in eine Bitmap laden. Irgendwie verweigert aber die Klasse unter Windows bei dem Code die Arbeit. Unter OSX, Android und iOS geht das aber problemlos. Ich mag aber nicht auf Indy umstellen, sondern lieber den Nativen Code von Embarcadero nutzen. Soweit ich mich erinnere ging das aber unter 10.3 ohne Murren und Knurren.
procedure TForm3.FormCreate(Sender: TObject);
var http: THttpClient; stream: TMemoryStream; begin stream := TMemoryStream.Create; http := THttpClient.Create; http.HandleRedirects := true; try try http.Get('https://cdn.wallpapersafari.com/81/79/vl5G7p.jpg', stream); stream.Position := 0; except end; finally http.DisPoseOf; end; Image1.Bitmap.LoadFromStream(stream); stream.free; end; Peter |
AW: THTTPClient unter Windows geht nicht richtig
Magst du noch angeben was für dich "Arbeit verweigern" heißt? Wenn du die Exception nicht einfach schluckst und/oder im Debugger schaust, dann wüssten wir auch was denn genau nicht läuft wie es sollte...
|
AW: THTTPClient unter Windows geht nicht richtig
Ja klar, es kommt zu einem 12002 als Fehlermeldung nachdem der Timeout erreicht ist.
|
AW: THTTPClient unter Windows geht nicht richtig
Der nachfolgende Code lädt bei mir unter 10.0 Seattle und 10.4.0 Sydney problemlos die 139 KB große Sonnenblumenwiese herunter, unter Windows 32 und 64 Bit.
Irgendwelche spannenden Proxies auf deinem System? Und welche Delphi-Version genau?
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Classes, System.Net.HttpClient; procedure p(); const url = 'https://cdn.wallpapersafari.com/81/79/vl5G7p.jpg'; filePath = 'c:\users\localUser\Desktop\picture.jpg'; var http: THttpClient; stream: TMemoryStream; begin stream := TMemoryStream.Create(); try http := THTTPClient.Create(); try http.HandleRedirects := True; http.Get(url, stream); stream.Seek(0, TSeekOrigin.soBeginning); stream.SaveToFile(filePath); finally http.Destroy(); end; finally stream.Destroy(); end; end; end. |
AW: THTTPClient unter Windows geht nicht richtig
Wie ist das mit dem "https"
Wir haben dazu einfach eine Indy TIdHttp mit passender TIdServerIOHandlerSSLOpenSSL Komponente genommen. Alternativ: Direkt mit Windows Funktion Download URLDownloadToFile(nil,PChar(MeineURLzumDownload),P Char(DerLokaleDateiname),0,nil) |
AW: THTTPClient unter Windows geht nicht richtig
Delphi-Quellcode:
Dort dürfte eher das Problem liegen.
Image1.Bitmap.LoadFromStream(stream);
Um welches Betriebssystem geht es denn? Die meisten, die das hier testen, verwenden vermutlich Windows 10, so auch ich. Dort ist das Laden mit den in Windows integrierten Codecs auch kein Problem. Bei älteren Betriebssystemen muss das nicht unbedingt funktionieren. Was passiert denn, wenn du dir das im Debugger schrittweise anschaust? Ist Stream.Size z.B. nach dem Laden korrekt? Gibt es eine Exception? |
AW: THTTPClient unter Windows geht nicht richtig
Zitat:
|
AW: THTTPClient unter Windows geht nicht richtig
Liste der Anhänge anzeigen (Anzahl: 1)
Stimmt, das hatte ich wieder vergessen nachdem ich es getestet hatte. :oops:
Hier geht es jedenfalls auch mit dem Originalcode 1:1. // EDIT: Hilft vielleicht der Process Monitor weiter? Bei mir sieht man dort das: Anhang 53568 Gibt es dort auch ein TCP Receive? |
AW: THTTPClient unter Windows geht nicht richtig
Vielen Dank für die Antwort. Das Problem lag wohl an meiner Firewall, bzw. der von Windows. Ich hab diese testweise ausgestellt und danach ging das ganze. Was mich wundert ist, dass ich den selben Code zum Lesen von XML und JSONs von einem Server verwende und das ging komischerweise. Bilder hat er aber geblockt.
Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz