2012-10-04 11 views
9

Ich würde fragen, ob jemand so freundlich war, mir zu erklären, wie man sich auf der Webseite von Delphi App anmeldet. Alle Beispiele, die ich hier gefunden habe, haben sich für mich als nutzlos erwiesen oder ich mache etwas falsch. Ich bin müde von der Suche und dem Code, der nicht funktioniert.Loggen Sie sich bei Delphi ein

Es gibt keine Fehlermeldung, ich habe sogar Seitencode in Memo aber scheint es Code von Login-Seite (nicht Konto [Dashboard] Seite) - scheint dieser Code kann nicht Auth passieren und ich weiß nicht warum .

Was in diesem Code falsch ist:

procedure Login; 
var 
HTTP: TIdHTTP; 
Param: TStringList; 
S: String; 
begin 
HTTP := TIdHTTP.Create(nil); 
HTTP.CookieManager := Main_Form.CookieManager; 
Param := TStringList.Create; 
Param.Clear; 
Param.Add('login=example'); 
Param.Add('password=example'); 

try 
HTTP.Get ('http://www.filestrum.com/login.html'); 
HTTP.Post('http://www.filestrum.com/login.html', Param); 
S := HTTP.Get ('http://www.filestrum.com/?op=my_account'); 
Main_Form.Memo2.Lines.Add(S); 
finally 
    HTTP.Free; 
    Param.Free; 
end; 
end; 

oder mit dieser Version:

procedure Login; 
var 
HTTP: TIdHTTP; 
S: String; 
begin 
HTTP        := TIdHTTP.Create(nil); 
HTTP.CookieManager    := Main_Form.CookieManager; 
HTTP.Request.BasicAuthentication := True; 
HTTP.Request.Username   := 'example'; 
HTTP.Request.Password   := 'example'; 
HTTP.AllowCookies    := True; 
HTTP.HandleRedirects    := True; 

S := HTTP.Get ('http://www.filestrum.com/?op=my_account'); 
Main_Form.Memo2.Lines.Add(S); 
end; 

Gebrauchte Delphi XE2 und es gibt keine Möglichkeit, diesen Code ausgeführt wird und Anmeldung zu machen. Das gleiche gilt für die XE3-Demo. Wie gesagt, ich bin wirklich müde, nach einer Lösung zu suchen, Tage zu verschwenden und nichts.

Bitte Jungs, einige helfen hier. Brauche es wirklich.

+0

Sie haben auch die Absätze 2 betteln um Hilfe verschwendet (die Sie bereits implizit tat durch die Frage Entsendung), aber ganz vergessen zu erwähnen, was schief läuft. Kompilierzeit, Laufzeit, spezifische Fehlermeldungen? – GolezTrol

+0

Haben Sie versucht, das zusätzliche '/' Sie haben in 'http: //www.filestrum.com//? Op = my_account' zu entfernen? – TLama

+0

Es gibt keine Fehlermeldung, nichts. Ich erhalte den Seitencode in Memo, aber es scheint, dass er die Authentifizierung nicht bestanden hat. Der gleiche Benutzername und Passwort funktionieren von Firefox. http://www.filestrum.com/?op=my_account - mein Fehler, aber es ist immer noch gleich. Was auch immer ich versuche - kann mich nicht aus dem Code einloggen. – Cohen

Antwort

7

versuchen, etwas wie folgt aus:

function Login: string; 
var 
    IdHTTP: TIdHTTP; 
    Request: TStringList; 
    Response: TMemoryStream; 
begin 
    Result := ''; 
    try 
    Response := TMemoryStream.Create; 
    try 
     Request := TStringList.Create; 
     try 
     Request.Add('op=login'); 
     Request.Add('redirect=http://www.filestrum.com'); 
     Request.Add('login=example'); 
     Request.Add('password=example'); 
     IdHTTP := TIdHTTP.Create; 
     try 
      IdHTTP.AllowCookies := True; 
      IdHTTP.HandleRedirects := True; 
      IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded'; 
      IdHTTP.Post('http://www.filestrum.com/', Request, Response); 
      Result := IdHTTP.Get('http://www.filestrum.com/?op=my_account');  
     finally 
      IdHTTP.Free; 
     end; 
     finally 
     Request.Free; 
     end; 
    finally 
     Response.Free; 
    end; 
    except 
    on E: Exception do 
     ShowMessage(E.Message); 
    end; 
end; 
+0

So dass 'redirect' ist keine Umleitung? Klingt komisch ... – TLama

+0

@ TLama: Die POST-Anfrage gibt eine 302 aus, so dass es auf der Clientseite ist, eine neue GET-Anfrage auszugeben – whosrdaddy

+0

Yesss .. dieses funktioniert! Leute, vielen Dank – Cohen

Verwandte Themen