Autor Beitrag
strgalt
Hält's aus hier
Beiträge: 3

Win XP (SP2), SuSE Linux
PureBasic 4, C++ (VS 6), C# (VS NET), Delphi 10 (BDS 2006)
BeitragVerfasst: Sa 23.09.06 20:58 
Hallöchen zusammen,

ich versuche nun schon seit Tagen mit diesen Indy- Komponenten einen SSL POST hinzubekommen. Zuerst mit Delphi 2006, da hatte ich ständig einen Read Timeout Fehler. Hab dann das Developer Studio wieder runtergeschmissen (mal unter uns: Die ist ja super sch... Und wenn ich was unter NET schreib, dann lieber mit M$ C#). Hab dann wieder Delphi 6 installiert (mit Update Pack 2 und RTL 3). Habe dann Indy 10.1.5_d6 installiert (mit der automatische Installation). Gesaugt habe ich mir dann noch alle DLL- Packs von OpenSSL (bis 0.96k).

In einem neuen Projekt einen Button, idHTTP und ein idSSLIOHeaderSocketOpenSSL drauf und folgende Eigenschaften eingestellt:

idSSLIOHeaderSocketOpenSSL1:
    CertFile:
      Hab ich ein Klasse 3 aus dem IE als BASE64 exportiert
      und dort eingetragen

    Method:
      sslvSSLv23

    Mode:
      sslmClient

    VerifyDepth:
      2

idHTTP1:
    HandleRedirects:
      True

    IOHeader:
      IdSSLIOHandlerSocketOpenSSL1


ButtonClick sieht so aus:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
unit Unit_frm_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdTCPClient, IdHTTP, IdBaseComponent,
  IdComponent, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
  IdSSLOpenSSL, StdCtrls, IdTCPConnection;

type
  Tfrm_Main = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    HTTP_eBay: TIdHTTP;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frm_Main: Tfrm_Main;

implementation

{$R *.dfm}

procedure Tfrm_Main.Button1Click(Sender: TObject);
var
   Temp : TStrings;

begin
   Temp.Create();
   Temp.add('Name: Test');
   Temp.add('pass = 12');
   try
      idHTTP1.Post('https:\\www.google.de',Temp)
   except
      showmessage('Fehler');
   end;
end;

end.


Zunächst hat er nach dem Klick auf den Button nach einer 'idHTTP.pas' verlangt. Die hab ich dann im Verzeichnis C:\Programme\Indy 10 for Delphi 6\Source\Protocols gefunden und ihm zum fressen gegeben.
Und jetzt bekomme ich einen Zugriffsfehler nach dem Klick auf den Button
Zitat:

Im Projeekt Projekt1.exe ist eine Exception der Klasse EAccessVioaltion aufgetreten. Meldung: Zugirffsverletzung bei Adresse ... in Modul 'Projekt1.exe'. Lesen von Adresse ... Prozeß wurde angehalten.

Es öffnet sich dann ein Codefenster mit der 'idHTTP.pas'.Er markiert die Zeile 762, eine For- Schleife.

Ich hoffe mal, dass mir jemand weiterhelfen kann. Kann ja nicht sein, dass so eine Standart- Technik so gar nicht zu machen ist mit Native Delphi (aber Geld geb ich dafür keins aus). Hatte mir ja auch schon die WinInet.dll dynamisch eingebunden - das hat auch wunderbar gefunzt, aber wenn ich native schreib, dann will ich keinen M$ Müll dabei haben. Allerding, und das würde mir echt leid tuhen, wenn ich das nicht bald gebacken bekomme, dann muss ich das leider mit M$ C# machen, denn mit dem Frameworks geht das ja wie Buttons auf ne Form ziehen.

Übrigens: Wenn ich mit GET abrufen will, funktionierts auch mit https, es geht nur bei POST nicht.


Mit Dank im Voraus
Sascha
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 24.09.06 09:17 
also mir kommt ja dein Post Befehl etweas merkwürdig vor.
Änder mal die Zeilen so ab:
ausblenden Delphi-Quelltext
1:
2:
   Temp.add('name=Test');
   Temp.add('pass=12');

Was der Doppelpunkt da soll, weiß ich echt nicht und die Leerzeichen gehören da eigendlich auch nicht hin !

Edit: Weil mir das grade einfällt, hast du auch den Port der Indy HTTP geändert?
HTTPS läuft ja nicht über den 80er Prot sondern über 443 (glaub ich, da bin ich mir nicht sicher!)

_________________
In the beginning was the word.
And the word was content-type: text/plain.
strgalt Threadstarter
Hält's aus hier
Beiträge: 3

Win XP (SP2), SuSE Linux
PureBasic 4, C++ (VS 6), C# (VS NET), Delphi 10 (BDS 2006)
BeitragVerfasst: So 24.09.06 12:35 
hi,

ja, Port steht auf 443. Und es scheint auch egal zu sein, was da in Temp ist...

MfG
Sascha