![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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