![]() |
idhttp - gibt es ein gutes Tutorial?
Hallo Zusammen,
ich spiele gerade mit der idhttp-Komponente (Indy 9) rum und will versuchen mich bei mySpace.com einzuloggen um mögliche Nachrichten abzugreifen. Da das ganze ein wenig komplizierter ist, das ich ursprünglich angenommen hatte, wollte ich mal fragen, ob vielleicht jemand ein gutes Tutorial dazu kennt? Und bitte nicht das hier ( ![]() --- Mein eigentliches Problem ist folgendes: Ich möchte mich per http post in das portal einloggen:
Delphi-Quellcode:
Als Antwort lande ich immer auf der Seite, auf die man kommt, wenn man sein Passwort falsch eingegeben hat.
var
PostInformationStream : TStringStream; Parameter : TStringStream; begin idhttp1.HandleRedirects:=true; PostInformationStream := TStringStream.Create(''); Parameter := TStringStream.Create(''); Parameter.WriteString('fuseaction=login.process'); Parameter.WriteString('email=XYZ'); Parameter.WriteString('password=ZYX'); try IdHTTP1.Post('http://login.myspace.com/index.cfm', Parameter, PostInformationStream); Memo1.Text := PostInformationStream.DataString; finally Parameter.Free; PostInformationStream.Free; end; end; Wenn ich mir die Formulareigenschaften der Loginseite von Myspace in Firefox anzeigen lasse, dann ist die Formular-Aktion des Login-formulars "http://login.myspace.com/index.cfm?fuseaction=login.process&MyToken=1d833b1 7-a90a-4cee-b7dd-ae58c4470d77". Diesen Token (der immer neu generiert wird), habe ich bei meinen Parametern gar nicht angegeben.. aber ich weiß auch nicht, wie ich ihn vorher auslesen könnte. Hat jemand eine Idee?! gruß Phill |
Re: idhttp - gibt es ein gutes Tutorial?
es liegt eben an diesem Token würde ich sagen. Wie dir schon aufgefallen ist findet sich dieser Token auf der Seite wo du dich einloggst. Also musst du diese Seite vorher abfragen und den Token daraus extrahieren (Seite also parsen).
Ein Tutorial zu idhttp kenn ich nicht. Aber so viel gibt es da auch nicht das man ein Tutorial bräuchte. |
Re: idhttp - gibt es ein gutes Tutorial?
versuchs mal so:
Delphi-Quellcode:
var
lData : TIdMultiPartFormDataStream; sl : TStringList; begin lData := TIdMultiPartFormDataStream.Create;//Struktur erzeugen try lData.AddFormField('Name','Wert');//Feld hinzufügen with idhttp1 do begin sl:=TStringList.Create; sl.Text := Post(URL,lData); //Irgendwas tun mit sl... end; finally sl.Free; lData.Free; end; |
Re: idhttp - gibt es ein gutes Tutorial?
Ich habe jetzt sowohl den Token ausgelesen, als auch die 2te Methode mit dem probiert... leider schaffe ich es immernoch nicht mich einzuloggen.
Delphi-Quellcode:
Function TForm1.getToken: String;
VAR token : String; BEGIN Token := idHTTP1.Get('http://www.myspace.com/'); Token := copy(Token,pos('http://login.myspace.com/index.cfm?fuseaction=login.process&MyToken=',Token)+68,length(Token)); result := copy(Token,1,pos('" method="post"',Token)-1); END; Procedure Tform1.Logintest1; var ParamData : TStringStream; token : String; begin idhttp1.HandleRedirects:=true; ParamData := TStringStream.Create(''); try Token := getToken; finally try ParamData.WriteString('fuseaction=login.process'); ParamData.WriteString('MyToken='+Token); ParamData.WriteString('email=XYZ'); ParamData.WriteString('password=ZYX'); Memo1.Text := IdHTTP1.Post('http://login.myspace.com/index.cfm',ParamData); finally ParamData.Free; end; end; end; Procedure Tform1.Logintest2; var lData : TIdMultiPartFormDataStream; token : String; begin idhttp1.HandleRedirects:=true; lData := TIdMultiPartFormDataStream.Create;//Struktur erzeugen try Token := getToken; finally try lData.AddFormField('fuseaction','login.process'); lData.AddFormField('MyToken',Token); lData.AddFormField('email','XYZ'); lData.AddFormField('password','ZYX'); Memo1.Text := IdHTTP1.Post('http://login.myspace.com/index.cfm',lData); finally lData.free; end; end; end; |
Re: idhttp - gibt es ein gutes Tutorial?
Naja mir ist das dann jetzt doch ein wenig zu aufwändig... habs zwar jetzt geschafft, mich einzuloggen, aber nicht die Session aufrecht zu erhalten. Mach das ganze jetzt mit dem TWebbrowser... der ist zwar um einiges langsamer, aber eben 1000x einfacher zu handeln.
Delphi-Quellcode:
procedure tform1.Login;
VAR Document: Variant; BEGIN Document := Webbrowser1.Document; Document.forms.item(1).elements.item(1).value := 'Email@Email.de'; Document.forms.item(1).elements.item(2).value := 'Passwort'; Document.forms.item(1).submit(); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz