AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Hilfe - HTTPS unterschiedliches Verhalten

Hilfe - HTTPS unterschiedliches Verhalten

Ein Thema von KlausV · begonnen am 2. Aug 2018 · letzter Beitrag vom 3. Aug 2018
Antwort Antwort
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#1

AW: Hilfe - HTTPS unterschiedliches Verhalten

  Alt 2. Aug 2018, 17:19
Ich habe madexcepts installiert und hier steht u.a.:
executable : DMSClient.exe
exec. date/time : 2018-08-02 18:10
version : 3.1.0.0
compiled with : Delphi 7
madExcept version : 4.0.20
DMSClient.exe.mad : $0000d5c4, $81484d02, $a5ca6cfd
callstack crc : $71fbbae8, $b07f6f5a, $b07f6f5a
exception number : 1
exception class : EIdWinsockStubError
exception message : Error on call to Winsock2 library function shutdown: Die Anwendung hat die Funktion WSAStartup nicht aufgerufen, oder bei dieser Funktion ist ein Fehler aufgetreten.
Das deutet auf einen Socket error hin.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#2

AW: Hilfe - HTTPS unterschiedliches Verhalten

  Alt 2. Aug 2018, 17:33
Weiß nicht, welche Indykomponenten alle bei Dir im Einsatz sind, deshalb mal sinngemäß für TIDHttp:
Delphi-Quellcode:
  // immer!!!
  // nachdem eine Aufgabe erledigt wurde, auch im Fehlerfalle:
  idhttp.Disconnect(True);
  idhttp.IOHandler.InputBuffer.Clear;
Seit dem ich das so handhabe, hab' ich bei der Nutzung dieser Komponente deutlich weniger Fehlermeldungen (eigentlich fast keine mehr).

Schau bitte mal, ob Du bei Deinem Quelltext etwas ähnliches umsetzen kannst. Alle Verbindungen explizit beenden, alle Buffer explizit leeren.

Wenn beim Programmenden nämlich noch 'ne Verbindung offen ist, eine Komponenten schon freigegben wurde, während eine andere die beim Beenden der Verbindung noch braucht, kann der Fehler 216 auftreten.

Diese Abhängigkeit hat man z. B. bei 'ner TIDHTTP und 'nem zugewiesenen IOHandler, also z. B. 'ner TIdSSLIOHandlerSocketOpenSSL.

TIDHTTP wird freigegeben und anschließend erst TIdSSLIOHandlerSocketOpenSSL.

Oder umgekehrt:

TIdSSLIOHandlerSocketOpenSSL ist schon weg und TIDHTTP will dann seine Verbindung schließen.

Geändert von Delphi.Narium ( 2. Aug 2018 um 18:04 Uhr)
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#3

AW: Hilfe - HTTPS unterschiedliches Verhalten

  Alt 2. Aug 2018, 17:56
idhttp.Disconnect(True);
idhttp.IOHandler.InputBuffer.Clear;
[/DELPHI]

Das wars. Kein Fehler mehr. Super, vielen Dank. Habe es als letztes Statement eingegeben und siehe da der Fehler ist weg.
Den IOhandler für SSL muss man wohl nicht mehr erzeugen. Habe den auskommentiert. Indy erkennt es anhand der URL.
Jetzt mache ich erst mal schluss und teste morgen noch weiter.
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
88 Beiträge
 
Delphi 7 Professional
 
#4

AW: Hilfe - HTTPS unterschiedliches Verhalten

  Alt 3. Aug 2018, 08:51
idhttp.Disconnect(True);
idhttp.IOHandler.InputBuffer.Clear;
Sollte man beide Befehle unter try except stellen? Wenn ja, wie wäre die genau syntax? Danke schon mal.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#5

AW: Hilfe - HTTPS unterschiedliches Verhalten

  Alt 3. Aug 2018, 09:09
ungefähr sowas:
Delphi-Quellcode:
function MyGetUrl(http: tidHTTP; sUrl: string; sl : TStrings; var sMessage: string): Boolean;
begin
  Result := false;
  try
    http.RedirectMaximum := 0; // oder die Anzahl der maximal erwünschten Redirects
    http.HandleRedirects := false; // und hier dann true.
    http.Response.Clear;
    http.Get(sUrl, sl);
    http.Disconnect(True);
    http.IOHandler.InputBuffer.Clear;
    Result := true;
  except
    on e: Exception do begin
      case http.ResponseCode of
        301, 302 : sMessage := http.ResponseText;
      else
        sMessage := AnsiReplaceText(e.Message, #13#10, ' ');
      end;
      // Fehler ggfls. protokollieren:
      PSReg.WriteAppLog(Format('Scriptaufruf : GetSSLMethod(%s)', [sUrl]));
      PSReg.WriteAppLog(Format('Fehlermeldung: %s', [AnsiReplaceText(e.Message, #13#10, ' ')]));
      PSReg.WriteAppLog(Format('SSLMethod : %s', [sMethod]));
      http.Disconnect(True);
      http.IOHandler.InputBuffer.Clear;
    end;
  end;
end;
Minimal:
Delphi-Quellcode:
try
  http.Response.Clear;
  sIrgendeineStringVariabel := http.Get('https://www.delphipraxis.net/dp_recentthreads.php?timeframe=48hr');
  http.Disconnect(True);
  http.IOHandler.InputBuffer.Clear;
except
  on e: Exception do begin
    ShowMessage(e.Exception);
    http.Disconnect(True);
    http.IOHandler.InputBuffer.Clear;
  end;
end;
eventuell auch:
Delphi-Quellcode:
try
  http.Response.Clear;
  try
    sIrgendeineStringVariabel := http.Get('https://www.delphipraxis.net/dp_recentthreads.php?timeframe=48hr');
  except
    ShowMessage(e.Exception);
  end;
finally
  http.Disconnect(True);
  http.IOHandler.InputBuffer.Clear;
end;
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:48 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