2011-12-18 18 views
1

WebからHTMLページの内容を取得する必要がありますが、それぞれのリソースの内容はユーザーがWebサイトにログインした後でのみ利用できます。Delphi 2007のパスワードで保護された場所にファイルをダウンロードする方法

具体的には、Youtubeで不適切と判断された動画ファイルのHTMLページをダウンロードする必要があります。私はログイン資格情報を持っていますが、ログインを続行する方法についてはわかりません。

私は現在、SynapseのHTTPSendを使用したパスワードで保護されていないHTMLページをダウンロードしています。以前のプロジェクトで使用したClever Internet Suite 7のライセンスコピーもあります。

私は(これは厳密に有益である必要があれば、私はアプローチを変えることができる)ようなルックスを使用していたコード:私はあなたが私のためにすべての作業を行うことを期待していない

function GetHTMLFile(s: string): string; 
var 
    sHTTPSource:TStringList; 
    HTTP: THTTPSend; 
begin 
    try 
    sHTTPSource := TStringList.Create; 
    if HttpGetText(s, sHTTPSource) then 
    begin 
     result := sHTTPSource.Text; 
    end; 
    finally 
    sHTTPSource.Free; 
    end; 
end; 

が、私は本当に正しい方向へのヒントを感謝します。

+0

少なくとも、どのような認証が行われているか調べてみましたか? HTTP基本認証が何であるか知っていますか?またはダイジェスト認証?ブラウザで作成されたダイアログボックスが表示され、ユーザ名とパスワードを尋ねるか、Webページに組み込まれているテキスト入力コントロールを使用してログインしているので、使用しているWebアプリケーションによってコードで処理されますか? –

答えて

3

THTTPSendには、名前と値のペア(それぞれがクッキー)を持つ.Cookies(TStringList)というプロパティがあります。同じTHTTPSendインスタンスを使用してログイン手続きをポストすると、YouTubeから送信されたCookieが取得され、今後同じTHTTPSendインスタンスを使用して保持されます。プロテクトされたページへのリクエストを行う前に、毎回これを行うか(新しいクッキーを取得する)、またはTHTTPSendにクッキー情報をハード(またはソフト)コードすることができます。

ログインを一度だけ実行し、.cookies TStringListをどこかに保存して、新しいリクエストを作成するために作成する新しいTHTTPSendに割り当てるたびに保存することもできます。

+0

ねえ、ジャスティン。入力をありがとう、それは私が考えた方法です。しかし、私はSynapseのドキュメントをチェックしましたが、ユーザ名とパスワードの投稿については何もありません。ログイン部分に別のコンポーネントを使用する必要がありますか?クッキーを「嗅がせ」して、次のHTTPSendリクエストで使用しますか? –

+0

ああ、もう一度TFMを読み直してみた。大きなアドバイス。再度、感謝します。 –