2012-10-04 10 views
9

Delphiアプリケーションからウェブページにログインする方法を私に説明するのに親切な人がいたかどうか尋ねます。私がここで見つけたすべての例は、私にとって役に立たないことを証明したか、私は何か間違ったことをしています。私は検索と動作しないコードに疲れています。Delphiからウェブサイトにログイン

メモにページコードが表示されますが、ログインページ(アカウント[ダッシュボード]ページではありません)のコードと思われます - このコードは認証をまったく通過できないと思われます。このコードで間違って何

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; 

またはこのバージョンで:

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; 

のDelphi XE2使用され、このコードで実行して、ログインを作成する方法はありません。 XE3のデモと同じです。私が言ったように、私は本当に何か解決策を探すのに疲れています。

してくださいみんな、ここにいくつかの助け。それが本当に必要です。

+0

をまた(すでに質問を投稿することで暗黙のうちにやっている)の助けを物乞い2段落を無駄にしますが、完全に間違っている何が起こっているかを言及するのを忘れています。コンパイル時間、実行時間、特定のエラーメッセージ? – GolezTrol

+0

あなたは 'http://www.filestrum.com//?op = my_account'にある余分な'/'を削除しようとしましたか? – TLama

+0

エラーメッセージはありません。何もありません。私はメモにページコードを取得するが、それは認証を通過していないようだ。 Firefoxと同じユーザ名とパスワードが使用されます。 http://www.filestrum.com/?op=my_account - 私のエラーですが、それでも同じです。私が何をしようと - コードからログインすることはできません。 – Cohen

答えて

7

はこのような何か試してみてください:

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

'redirect'がリダイレクトされないように?奇妙同じに聞こえるされました@ TLama:POSTリクエストで302が発行されるので、クライアント側で新しいGETリクエストを発行します。 – TLama

+0

...私は知っていたが、それでも結果、すべてが:( – whosrdaddy

+0

Yesss .. this one works! みんなありがとうございます。 – Cohen

関連する問題