procedure TForm1.btn1Click(Sender: TObject);
var
PostDataStream : TStringStream;
MYIOHandler: TIdSSLIOHandlerSocket;
MyMultiPartFormDataStream: TIdMultiPartFormDataStream;
begin
//Voraussetzungen für SSL erzeugen
MYIOHandler:=TIdSSLIOHandlerSocket.Create(
nil);
MYIOHandler.SSLOptions.Method:=sslvSSLv23;
// Method anpassen an die welche vom Server unterstützt wird.
MYIOHandler.SSLOptions.Mode:=sslmUnassigned;
//Akzeptiert alle Zertifikate egal ob signiert oder nicht, sollte behandelt werden damit Zertifikate auf Gültigkeit etc. geprüft wird.
MyMultiPartFormDataStream:=TIdMultiPartFormDataStream.Create;
//Hier einen Stream erzeugen der nachher die Formulardaten enthält.
MyMultiPartFormDataStream.AddFormField('
user',username);
//Username
[B] MyMultiPartFormDataStream.AddFormField('
pass',RSApassword);
//RSA verschlüsseltes Passwort
[/B] MyMultiPartFormDataStream.AddFormField('
submit','
Anmelden');
//Falls geprüft wird ob der reguläre Button da war
MyMultiPartFormDataStream.AddFormField('
logintype','
login');
//Auch selbsterklärend
MyMultiPartFormDataStream.AddFormField('
pid','
28110');
//[B]die pid bleibt immer gleich[/B]
MyMultiPartFormDataStream.AddFormField('
redirect_url','
');
//Auch unbekannt wofür das ist
MyMultiPartFormDataStream.AddFormField('
tx_felogin_pi1[noredirect]','
0');
//Hier auch
[B] MyMultiPartFormDataStream.AddFormField('
n',RSAkey);
//der Schlüssel aus dem html
[/B] MyMultiPartFormDataStream.AddFormField('
e','
10001');
//[B]Der Wert bleibt immer gleich[/B]
IdHTTP1 := TIdHTTP.Create(
nil);
IdHTTP1.IOHandler:=MYIOHandler;
// Der Kompo das SSL mitgeben damit es eine SSL Verbindung aufbauen kann.
IdHTTP1.AllowCookies:=true;
//Standardeinstellungen vornehmen wie Cookies und Redirects.
IdHTTP1.HandleRedirects:=true;
PostDataStream := TStringStream.Create('
');
try
//Connect
IdHTTP1.Post(
URL, MyMultiPartFormDataStream, PostDataStream);
Memo1.Text := PostDataStream.DataString;
finally
MyMultiPartFormDataStream.Free;
PostDataStream.Free;
MYIOHandler.Free;
end;
end;