Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10, Delphi 2005, HTTP + SSL -> Fehler in der Componente (https://www.delphipraxis.net/49608-indy-10-delphi-2005-http-ssl-fehler-der-componente.html)

ken_jones 13. Jul 2005 18:12


Indy 10, Delphi 2005, HTTP + SSL -> Fehler in der Compone
 
Leider gibt es zu diesem Thema einige Beiträge in diesem Forum, doch keiner davon wurde beantwortet. Sieht so aus, als ob praktisch niemand diese Compos mit SSL verwendet. Ich versuchs trotzdem:

Folgender Code:

Ein TIdHTTP und ein TIdSSLIOHandlerSocketOpenSSL auf das Form, verbinden und dann:

Result := IdHTTP1.Get(sURI+sParam);

Gibt manchmal etwas ins Result zurück, manchmal auch nicht. Soweit nicht weiter Spannend. Jetzt aber: In ALLEN Fällen wird dasselbe von der Website geliefert. Wenn man ein InterceptLog dazunimmt, so gibt es folgendes Log (gekürzt):

Stat Connected.
Sent 13.07.2005 17:06:30: GET /cgi-bin/auk?cmd=ucn...;xml=1; HTTP/1.1<EOL>Host: secure.xxx.ch:443<EOL>Accept: text/html, */*<EOL>Accept-Encoding: identity<EOL>User-Agent: Mozilla/3.0 (compatible; Indy Library)<EOL><EOL>
Recv 13.07.2005 17:07:05: HTTP/1.1 200 OK<EOL>Date: Wed, 13 Jul 2005 15:03:56 GMT<EOL>Server: Apache/1.3.26 (Unix) Debian GNU/Linux mod_ssl/2.8.9 OpenSSL/0.9.6g mod_perl/1.26<EOL>Setted: : h: www.xxx.ch; s: www.xxx.ch;<EOL>Set-Cookie: SSL=1; domain=.xxx.ch; path=/; expires=Thu, 13-Jul-2006 15:03:56 GMT<EOL>Content-Type: text/xml; charset=ISO-8859-1<EOL>X-Cache: MISS from secure.xxx.ch<EOL>Connection: close<EOL>Transfer-Encoding: chunked<EOL><EOL>3c2<EOL><?xml version="1.0" encoding="iso-8859-1"?>...<EOL>
Recv 13.07.2005 17:07:28: 0<EOL><EOL>
Recv 13.07.2005 17:07:32:
Stat Disconnected.
Stat Connected.
Sent 13.07.2005 17:07:56: GET /cgi-bin/auk?cmd=ucn...;xml=1; HTTP/1.1<EOL>Host: secure.xxx.ch:443<EOL>Accept: text/html, */*<EOL>Accept-Encoding: identity<EOL>User-Agent: Mozilla/3.0 (compatible; Indy Library)<EOL><EOL>
Recv 13.07.2005 17:08:03: HTTP/1.1 200 OK<EOL>Date: Wed, 13 Jul 2005 15:04:59 GMT<EOL>Server: Apache/1.3.26 (Unix) Debian GNU/Linux mod_ssl/2.8.9 OpenSSL/0.9.6g mod_perl/1.26<EOL>Setted: : h: www.xxx.ch; s: www.xxx.ch;<EOL>Set-Cookie: SSL=1; domain=.xxx.ch; path=/; expires=Thu, 13-Jul-2006 15:05:00 GMT<EOL>Content-Type: text/xml; charset=ISO-8859-1<EOL>X-Cache: MISS from secure.xxx.ch<EOL>Connection: close<EOL>Transfer-Encoding: chunked<EOL><EOL>3c2<EOL><?xml version="1.0" encoding="iso-8859-1"?>...<EOL>
Recv 13.07.2005 17:14:06: 0<EOL><EOL>
Recv 13.07.2005 17:15:13:
Stat Disconnected.

Ich kann keinen einzigen Unterschied zwischen diesen beiden Fällen erkennen, aber im ersten Fall wurde die Result abgefüllt, im zweiten Fall wurde die Result Variable nicht abgefüllt.
Es scheint ein Fehler in der IdSSL zu sein, der den Chunked Part mit der Grösse $3c2 manchmal fälschlicherweise mit der Grösse 0 (welche gleich darauf folgt) nimmt, und dann nicht zurückliefert.
Ich konnte aber nicht ausfindig machen, was der Grund dafür ist. Das ganze Verhaltet sich sporadisch. D.h. ich kann von 10 Get's manchmal 5, 2 oder 8 mit Resultat kriegen.
Juhuii!

Hilfe!!!

Bernhard Geyer 13. Jul 2005 19:50

Re: Indy 10, Delphi 2005, HTTP + SSL -> Fehler in der Com
 
Ich kann dir nur den Tipp geben wenn Du Geld ausgeben kannst: Welchsle auf andere Komponenten.
Von den Indy hab ich in letzter Zeit schon öfters von Qualitätsproblemen gehört. Vor allem die 10er-Komponenten sollen noch ziemlich Buggy sein. Wir selbst setzen die IP*Works-Komponenten ein und sind bisher auf keine Probleme gestoßen.

ken_jones 13. Jul 2005 20:42

Re: Indy 10, Delphi 2005, HTTP + SSL -> Fehler in der Com
 
Danke für den Tipp!
Wenn ich mein Programm mal verkaufen kann, dann werde ich vielleicht auch mal Geld für ein GUTES Compopack ausgeben. Aber bis dahin möchte ich das Budget entsprechend klein halten, sprich das Geld lieber für den Psychiater ausgeben, den man bei Indy brauchen tut!

Egal, ich hab nun den *#°§&*-Fehler gefunden (ja, ich weiss, einer von 1000 Bugs in Indy 10) aber nun funktioniert wenigstens das Downloaden von Chunked HTTP v1.1 Transfers über SSL.

Man ändere simpel und einfach folgende Zeile in IdHTTP.pas:

Delphi-Quellcode:
    // GREGOR Workaround
    // if we get an error we disconnect if we use SSLIOHandler
// AMA Workaround to get chunked http v1.1 ssl transfers working again...
//    if Assigned(FHTTP.IOHandler) then
//    begin
//      Response.KeepAlive := not (FHTTP.Connected and (FHTTP.IOHandler is TIdSSLIOHandlerSocketBase) and Response.KeepAlive);
//    end;
Also kurzum, Gregors Workaround entfernen! Sein Workaround Code wurde inzwischen anderweitig Implementiert und dabei halt vergessen, den Workaround selbst zu entfernen. 5 Jahre lang... Was zum Teufel basteln da die Indy Jungs eingentlich rum??

Möge dieser Fix auch jemandem anderem Helfen.

B.t.w.: Die IP*Works Komponenten, was muss ich da an Geld in die Hand nehmen um die nötigen Pakete für HTTP/HTTPS Transfers kaufen zu können?

Greets,
Ken

Bernhard Geyer 14. Jul 2005 07:09

Re: Indy 10, Delphi 2005, HTTP + SSL -> Fehler in der Com
 
Zitat:

Zitat von ken_jones
Also kurzum, Gregors Workaround entfernen! Sein Workaround Code wurde inzwischen anderweitig Implementiert und dabei halt vergessen, den Workaround selbst zu entfernen. 5 Jahre lang... Was zum Teufel basteln da die Indy Jungs eingentlich rum??

Bei einem OpenSource-Projekt ist man immer darauf angewiesen das genügend Anwender sich auch bei der Entwicklung/Test beteiligen. Und wenn nicht genügend Helfer da sind ....

Zitat:

Zitat von ken_jones
B.t.w.: Die IP*Works Komponenten, was muss ich da an Geld in die Hand nehmen um die nötigen Pakete für HTTP/HTTPS Transfers kaufen zu können?

Preisliste findest Du hier

Alternativ könntest du die SSL-Implementierung von ICS testen. Ohne SSL haben wir sie problemlos im Einsatz. Und unsere Ergänzungen wurden auch bei neueren releases nicht vergessen :-)

ken_jones 14. Jul 2005 09:05

Re: Indy 10, Delphi 2005, HTTP + SSL -> Fehler in der Com
 
Danke für die Links! Ich bin auf meiner Suche nach Komponenten ebenfalls auf diese 2 Produkte gestossen, scheint das Beste zu sein.
IP*Works ist ne ganze Stange teurer als ICS; denke ich werde da mal ICS berücksichtigen, sobald ich das nächste Problem mit den Indy's hab ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 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