![]() |
Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Hallo !
Ich möchte den Verfügbarkeitsstatus der Elster-Server über eine von Elster herausgegebene XML-Datei (RSS) überprüfen. Der Link ist "https://www.elster.de/elsterweb/serverstatus_rss.xml" Über mehrere Browser kann ich die Datei problemlos aufrufen. Nun wollte ich die XML mit tIdHTTP auslesen um später bestimmte Informationen herauszulesen. Der Aufruf über :
Code:
schlägt jedoch mit der Meldung "Socket-Fehler # 10054Die Verbindung wurde vom Peer zurückgesetzt." fehl.
XMLStr := IdHTTP1.Get('https://www.elster.de/extern/serverstatus_rss.xml');
Hat jemand eine Idee, was ich ändern muss? Gruß Guido P.S.: Delphi XE10.2 |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Guckst Du bite mal hier:
![]() In meinem RSS-Reader mache ich das prinzipiell in dieser Art:
Delphi-Quellcode:
(nur hinkopiert und nicht getestet.)
Try
HTTP.AllowCookies := True; HTTP.MaxAuthRetries := 1; HTTP.RedirectMaximum := 1; HTTP.HandleRedirects := True; HTTP.ProxyParams.BasicAuthentication := False; HTTP.ProxyParams.ProxyPort := 0; HTTP.Request.ContentLength := -1; HTTP.Request.Accept := 'text/html, */*'; HTTP.Request.BasicAuthentication := True; // Hier ist das Indy-Original "veraltet" und wird von manchen Servern abgelehnt. HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0'; HTTP.HTTPOptions := [hoInProcessAuth, hoKeepOrigProtocol, hoForceEncodeParams]; HTTP.Get('https://www.elster.de/extern/serverstatus_rss.xml',IrgendeineStringliste); HTTP.Disconnect(True); HTTP.IOHandler.InputBuffer.Clear; except on e : Exception do begin HTTP.Disconnect(True); HTTP.IOHandler.InputBuffer.Clear; // weitere Fehlerverarbeitung. end; end; Ansonsten die Suchmaschine Deiner Wahl mit "socket 10054 indy" füttern. Es gibt etliche Hinweise, welcher davon genau Dein Problem lösen kann (und ob überhaupt) vermag ich nicht zu beurteilen. |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Ja - Die Seite habe ich bei meinen Recherchen vorher schon gefunden.
Hat leider nichts gebracht. Grundsätzlich funktioniert mein Ansatz ja auch. Wenn ich z.B. die Avira News "https://www.avira.com/de/news.xml" laden möchte klappt das problemlos. Einzige erforderliche Änderung an den Grundeinstellungen von IdHTTP dafür ist
Code:
Nur auf der Elster-Seite klappt's nicht.:wall:
HandleRedirects := True;
|
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Hast Du Deiner idHTTP-Komponente 'ne TIdSSLIOHandlerSocketOpenSSL zugewiesen? Wenn nein, hole das bitte nach.
Bei der setzt Du dann bitte
Delphi-Quellcode:
.
SSLOptions.Method := sslvSSLv23;
Jetzt sollte als Ergebnis vom Get erstmal ein HTTP/1.1 301 Moved Permanently kommen. Du wirst dann umgeleitet nach ![]() Ein Ergebnis bekomme ich mit der ersten Url (der von Dir geposteten) erst, wenn ich
Delphi-Quellcode:
setze.
RedirectMaximum := 2;
|
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Und das klappt bei Dir ?
Hab's genauso gemacht. Habe auch die Einstellungen Deines ersten Beitrags probiert. Nix - Genau die gleiche Meldung. Hab dann statt tIdHTTP mal tNetHTTPClient probiert. Andere Fehlermeldung - (12030 Serververbindung beendet) - gleiches Ergebnis ... Hab zum Spaß mal eine tWebBrowser - Komponente auf die Form gelegt und mit
Delphi-Quellcode:
aufgerufen. Dann wird die XML im tWebBrowser korrekt angezeigt.
WebBrowser1.URL='https://www.elster.de/extern/serverstatus_rss.xml';
WebBrowser1.Navigate; :glaskugel: Es ist zum Verzweifeln... |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Anhängen ein bei mir funktionierendes Minimalprogramm.
|
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Danke für das Testprogramm.
Hab's ausprobiert. - Gleiches Ergebnis. Also entweder werde ich inzwischen von Elster irgendwie geblockt - allerdings funktioniert ja der Browseraufruf der Seite und auch Deine EXE - , oder irgendwas wurde an den Indys übelst abgeändert und keiner hat's mir gesagt.:wiejetzt: Ich probiere Deinen Code heute Abend mal zu hause mit einer älteren Delphi/Indy Version aus... |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Gerade ausprobiert - Unter XE2 funktioniert sowohl Deine Version, als auch mein Einzeiler-Minimal-Projekt...
Delphi-Quellcode:
Irgendwas scheint da mit den Indys unter XE10.2 nicht zu stimmen.
Memo1.Lines.Text := idHTTP1.Get('https://www.elster.de/extern/serverstatus_rss.xml');
|
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Die ELSTER-Server unterstützen seit einiger Zeit nur noch TLS.
Wahrscheinlich hilft dir ein sslvTLSv1_2 |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Mein Programm funktioniert mit SSLOptions.Method := sslvSSLv23,
sslvTLSv1 führt zu dieser Fehlermeldung:
Code:
sslvSSLv2 endet mit der Meldung
---------------------------
Project1 --------------------------- Socket Error # 10054 Connection reset by peer. --------------------------- OK ---------------------------
Code:
sslvSSLv3 liefert mir
---------------------------
Project1 --------------------------- Error creating SSL context. --------------------------- OK ---------------------------
Code:
Nur mit sslvSSLv23 bekomme ich dashier:
---------------------------
Project1 --------------------------- Error connecting with SSL. EOF was observed that violates the protocol --------------------------- OK ---------------------------
Code:
Wenn ich nicht weiß, welche Methode ich für SSL nehmen soll, behelfe ich mir (sinngemäß) hiermit:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"> <channel> <title>ELSTER-Serververfügbarkeit</title> <link>https://www.elster.de/elsterweb</link> <description>Verfügbarkeit ElsterOnline-Portal und authentifizierter bzw. nicht authentifizierter Dienste/Formulare</description> <language>de</language> <copyright>2014 Bayerisches Landesamt für Steuern - Dienststelle München, Projekt ELSTER</copyright> <lastBuildDate>Thu, 26 Oct 2017 12:33:12 GMT</lastBuildDate> <item> <title>Beschreibung</title> <link>https://www.elster.de/elsterweb/svs</link> <description>Zurzeit kann es beim Belegabruf unter Verwendung von Signaturkarten und ElsterSticks zu Problemen kommen. +++ Aufgrund von Wartungsarbeiten kann es am 27.10.2017 von 15:00 Uhr bis 16:00 Uhr bei der Steuerkontoabfrage in Baden-Württemberg zu Beeinträchtigungen kommen. +++ Aufgrund von Wartungsarbeiten steht am 27.10.2017 von 16:00 Uhr bis 17:30 Uhr die Steuerkontoabfrage in Bremen nicht zur Verfügung.</description> </item> <item> <title>Anmeldungssteuern (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Anmeldungssteuern (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Jahressteuererklärungen (nicht authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Jahressteuererklärungen (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Jahressteuererklärungen (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Bescheiddaten / Datenabholung (nicht authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Bescheiddaten / Datenabholung (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Bescheiddaten / Datenabholung (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>ELStAM (An-, Ab- und Ummeldung von Arbeitnehmern)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Protokollabholung zur LStB (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Protokollabholung zur LStB (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Lohnsteuerbescheinigungen (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Lohnsteuerbescheinigungen (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Steuerkontoabfrage (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>Hinweis</description> </item> <item> <title>Steuerkontoabfrage (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>Hinweis</description> </item> <item> <title>Belegabruf (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>Hinweis</description> </item> <item> <title>Belegabruf (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Kapitalertragsteueranmeldung nach EStG/InvStG (authentifiziert)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Kapitalertragsteueranmeldung nach EStG/InvStG (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Registrierung ElsterOnline (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Abruf der eigenen ELStAM (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Einspruch (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Steuerabzug beschränkt Stpfl. §50a EStG (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> <item> <title>Zusammenfassende Meldung (ElsterOnline)</title> <link>https://www.elster.de/elsterweb/svs</link> <description>OK</description> </item> </channel> </rss>
Delphi-Quellcode:
function MyGetSSLMethod(sUrl : String; var sMessage : String) : Integer;
var sMethod : String; myIdSSLVersion : TIdSSLVersion; begin Result := -1; for myIdSSLVersion := Low(TIdSSLVersion) to High(TIdSSLVersion) do begin SSL.SSLOptions.Method := myIdSSLVersion; sMethod := GetEnumName(TypeInfo(TIdSSLVersion), Ord(myIdSSLVersion)); Try http.RedirectMaximum := 0; http.HandleRedirects := false; http.Get(sUrl); http.Disconnect(True); http.IOHandler.InputBuffer.Clear; sMessage := sMethod; Result := Ord(myIdSSLVersion); break; except on e : Exception do begin case http.ResponseCode of 301, 302 : begin sMessage := http.ResponseText; Result := Ord(myIdSSLVersion); break; end; else sMessage := sMessage + #13 + e.Message; end; http.Disconnect(True); http.IOHandler.InputBuffer.Clear; end; end; end; end; |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Setzen von TLS hatte keine Wirkung.
Ich habe Deine Funktion MyGetSSLMethod mal in Delphi XE2 und XE10.2 bei ansonsten gleichen Einstellungen umgesetzt. Ergebnis XE2 :
Code:
Ergebnis XE10.2 :
sslvSSLv23
Code:
Fehler beim Verbinden mit SSL.
error:00000006:lib(0):func(0):EVP lib Socket-Fehler # 10054Die Verbindung wurde von Peer zurückgesetzt. Fehler beim Verbinden mit SSL. EOF festgestellt, das gegen das Protokoll verstößt Socket-Fehler # 10054Die Verbindung wurde von Peer zurückgesetzt. Socket-Fehler # 10054Die Verbindung wurde von Peer zurückgesetzt. Socket-Fehler # 10054Die Verbindung wurde von Peer zurückgesetzt. |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Zu den Indys gibt es OpenSSL-Dlls (hier im Forum zu finden:
![]() ![]() Schau bitte mal, ob die unterschiedlichen Programme die gleichen Dlls nutzen oder ob Du da eventuell in unterschiedlichen Pfaden unterschiedliche DLLs hast oder die mit XE10.2 erstelle Programmversion eventuell keine DLLs findet. Die libeay32.dll und die ssleay32.dll haben bei mit die Versionsnr. 1.0.2.12. Indy ist, wie Delphi 7, schon ein bisserl antiquiert: gsIdVersion = '10.2.3'; |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Bin eben a.G. eines polnischen Video-Tutorials auf eine ähnliche Idee gekommen und habe mir von
![]() Und was soll ich sagen? - Es funktioniert. :wall: ---> :hello: Danke für die Tipps ! |
AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Hi,
dass es mit sslvTLSv1 nicht funktioniert hat ist klar, ich habe auch sslvTLSv1_2 geschrieben. Die ELSTER-Domain unterstützt laut: ![]() auch nur TLS 1.2. Wenn ich mir den Indy-Quellcode so anschauen verstehe ich auch warum das mit sslvSSLv23 funktioniert hat:
Code:
Hauptsache es funktioniert jetzt.
procedure TIdSSLOptions.SetMethod(const AValue: TIdSSLVersion);
begin (...) sslvSSLv23 : fSSLVersions := [sslvSSLv2,sslvSSLv3,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]; (...) end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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