AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'
Thema durchsuchen
Ansicht
Themen-Optionen

Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

Ein Thema von Guido R. · begonnen am 25. Okt 2017 · letzter Beitrag vom 27. Okt 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#1

Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 25. Okt 2017, 15:52
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:
 XMLStr := IdHTTP1.Get('https://www.elster.de/extern/serverstatus_rss.xml');
schlägt jedoch mit der Meldung "Socket-Fehler # 10054Die Verbindung wurde vom Peer zurückgesetzt." fehl.
Hat jemand eine Idee, was ich ändern muss?

Gruß
Guido

P.S.: Delphi XE10.2
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 25. Okt 2017, 16:32
Guckst Du bite mal hier: http://www.echtzeithilfe.de/fixed-so...tidhttp-delphi

In meinem RSS-Reader mache ich das prinzipiell in dieser Art:
Delphi-Quellcode:
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;
(nur hinkopiert und nicht getestet.)

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.
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 25. Okt 2017, 16:55
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:
HandleRedirects := True;
Nur auf der Elster-Seite klappt's nicht.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 25. Okt 2017, 17:37
Hast Du Deiner idHTTP-Komponente 'ne TIdSSLIOHandlerSocketOpenSSL zugewiesen? Wenn nein, hole das bitte nach.

Bei der setzt Du dann bitte SSLOptions.Method := sslvSSLv23; .
Jetzt sollte als Ergebnis vom Get erstmal ein HTTP/1.1 301 Moved Permanently kommen.

Du wirst dann umgeleitet nach https://www.elster.de/elsterweb/serverstatus_rss.xml

Ein Ergebnis bekomme ich mit der ersten Url (der von Dir geposteten) erst, wenn ich RedirectMaximum := 2; setze.
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 26. Okt 2017, 12:54
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:
 WebBrowser1.URL='https://www.elster.de/extern/serverstatus_rss.xml';
 WebBrowser1.Navigate;
aufgerufen. Dann wird die XML im tWebBrowser korrekt angezeigt.

Es ist zum Verzweifeln...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 26. Okt 2017, 13:07
Anhängen ein bei mir funktionierendes Minimalprogramm.

Geändert von nahpets (21. Nov 2017 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 26. Okt 2017, 13:35
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.
Ich probiere Deinen Code heute Abend mal zu hause mit einer älteren Delphi/Indy Version aus...
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
137 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 26. Okt 2017, 14:03
Gerade ausprobiert - Unter XE2 funktioniert sowohl Deine Version, als auch mein Einzeiler-Minimal-Projekt...
Memo1.Lines.Text := idHTTP1.Get('https://www.elster.de/extern/serverstatus_rss.xml'); Irgendwas scheint da mit den Indys unter XE10.2 nicht zu stimmen.
  Mit Zitat antworten Zitat
ManBu

Registriert seit: 4. Mär 2008
9 Beiträge
 
#9

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 26. Okt 2017, 14:59
Die ELSTER-Server unterstützen seit einiger Zeit nur noch TLS.

Wahrscheinlich hilft dir ein sslvTLSv1_2
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

AW: Laden einer XML-RSS-Feeds mit tIdHTTP endet mit 'Socket-Fehler # 10054'

  Alt 26. Okt 2017, 15:23
Mein Programm funktioniert mit SSLOptions.Method := sslvSSLv23,

sslvTLSv1 führt zu dieser Fehlermeldung:
Code:
---------------------------
Project1
---------------------------
Socket Error # 10054
Connection reset by peer.
---------------------------
OK  
---------------------------
sslvSSLv2 endet mit der Meldung
Code:
---------------------------
Project1
---------------------------
Error creating SSL context.
---------------------------
OK  
---------------------------
sslvSSLv3 liefert mir
Code:
---------------------------
Project1
---------------------------
Error connecting with SSL.
EOF was observed that violates the protocol
---------------------------
OK  
---------------------------
Nur mit sslvSSLv23 bekomme ich dashier:
Code:
<?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>
Wenn ich nicht weiß, welche Methode ich für SSL nehmen soll, behelfe ich mir (sinngemäß) hiermit:
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz