unit duck1709;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, MsMultiPartFormData, IdCookieManager, StrUtils, pngimage, ExtCtrls,
GIFImg;
type
TForm1 =
class(TForm)
Edit1: TEdit;
login: TButton;
IdHTTP1: TIdHTTP;
Edit2: TEdit;
Memo1: TMemo;
upload: TButton;
IdCookieManager1: TIdCookieManager;
storXX: TButton;
Label1: TLabel;
Edit3: TEdit;
Image1: TImage;
Label2: TLabel;
Label3: TLabel;
Image2: TImage;
Image3: TImage;
procedure loginClick(Sender: TObject);
procedure uploadClick(Sender: TObject);
procedure storXXClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
StringList, sl: TStringList;
Edit3: TEdit;
s:
string;
implementation
{$R *.dfm}
procedure TForm1.loginClick(Sender: TObject);
begin
StringList := TStringList.Create;
//TStringList erstellen
try
StringList.Values['
yl_name'] := '
123456123456';
//Edit1.Text;
StringList.Values['
yl_pw'] := '
123456123456';
//Edit2.Text;
StringList.Values['
yl_submit'] := '
Login';
idhttp1.Post('
http://duckload.com/index.php?Modul=Login', StringList);
memo1.Lines.Text := idhttp1.Post('
http://duckload.com/member/', StringList);
finally
StringList.Free;
//Speicherfreigeben
end;
end;
////////////////////////////////////////////////////////////////
procedure TForm1.storXXClick(Sender: TObject);
var
Position1, Position2: Integer;
begin
s := idhttp1.Get('
http://duckload.com/index.html');
//sucht nach action=" und gibt die Position im String zurück,
//wir erhalten die Position von a möchten aber wissen was zwsichen
// " und " steht. Also zählen wir die Länge des Suchstrings dazu
Position1 := pos('
action="', s) +8;
//wir suchen nach dem abschließenden ", ab unserer ersten Position,
//könnten ja mehrere " im String sein...
Position2 := PosEx(s, '
"', Position1) - 1;
//wir kopieren den Text zwischen unseren Positionen, Copy erwartet
//aber nicht die Position des letzten Zeichen als dritten Parameter
//sondern die Anzahl der zu kopieren zeichen, da darfst du jetzt mal selbst überlegen ;-)
s := Copy(s, Position1, 48);
edit3.Text := s;
// Ausgabe des benutzten Stores
end;
////////////////////////////////////////////////////////////////
procedure TForm1.uploadClick(Sender: TObject);
var
MultiPartFormDataStream: TMsMultiPartFormDataStream;
Response:
String;
begin
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
// Objekte instanzieren
try
// Content-Type bestimmen
idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;
// Formular-Felder setzen, die keine Dateien sein sollen
MultiPartFormDataStream.AddFormField('
', '
');
// ...
// Datei laden
MultiPartFormDataStream.AddFile('
upload', '
clock.avi', '
multipart/form-data');
// diese Methode muss _vor_ dem Senden augerufen werden
MultiPartFormDataStream.PrepareStreamForDispatch;
MultiPartFormDataStream.Position := 0;
try
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
Response := idhttp1.Post(s, MultiPartFormDataStream);
except
// Upload fehlgeschlagen, entsprechend reagieren
end;
finally
MultiPartFormDataStream.Free;
end;
end;
end.