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:
Mode:
VerifyDepth:
idHTTP1:
HandleRedirects:
IOHeader: IdSSLIOHandlerSocketOpenSSL1
ButtonClick sieht so aus:
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 public 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