Indyスレッドがたくさんあることは知っていますが、私の場合と一致するものはありません。Delphi 5でIndyとCSVをダウンロード
ユーザー名とパスワードの形式のURLが指定されています。これは複数のハイパーリンクがあるURL/reports.phpに対するアクションです。
これらのリンクのそれぞれは、URL変数を持つページに転送されます。 reports.php?report = variablenameダウンロードがすぐに開始されます。
私の思考、これまで:各オン
procedure TForm1.PostData(Sender: TObject);
var
paramList:TStringList;
url,text:string;
// IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
idLogFile1 : TidLogFile;
begin
idLogFile1 := TidLogFile.Create(nil);
with idLogFile1 do
begin
idLogFile1.Filename := 'C:\HTTPSlogfile.txt';
idLogFile1.active := True;
end;
IdHTTP1 := TIdHTTP.Create(nil);
IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocket.Create(nil);
IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23;
IdHTTP1.IOHandler := IdSSLIOHandlerSocket1;
IdHTTP1.HandleRedirects := true;
IdHTTP1.ReadTimeout := 5000;
IdHTTP1.Intercept := idLogFile1;
paramList:=TStringList.create;
paramList.Clear;
paramList.Add('loguser=testuser');
paramList.Add('logpass=duke7aunt');
paramList.Add('logclub=8005');
url := 'https://www.dfcdata.co.uk/integration/reports.php?report=live';
try
IdHTTP1.Post(url,paramList);
except
on E:Exception do
begin
showMessage('failed to post to: '+url);
ShowMessage('Exception message = '+E.Message);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
reportType : String;
begin
PostData(Self);
reportType := 'live';
GetUrlToFile('',reportType+'.csv');
end;
procedure TForm1.GetUrlToFile(AURL, AFile : String);
var
Output : TMemoryStream;
success : Boolean;
begin
success := True;
Output := TMemoryStream.Create;
try
try
IdHTTP1.Get(AURL, Output);
IdHTTP1.Disconnect;
except
on E : Exception do
begin
ShowMessage('Get failed to GET from '+IdHTTP1.GetNamePath +'. Exception message = '+E.Message);
success := False;
end;
end;
if success = True then
begin
showMessage('Filed saved');
Output.SaveToFile(AFile);
end;
finally
Output.Free;
end;
end;
私はエラー "IOHandlerが有効ではありません" を取得してみてください。明らかに最初のページに正しく投稿しているわけではありませんが、誰かが私に何が欠けているかアドバイスしてくれますか?また、ログイン後にダウンロードURLをクリックするだけでも、またはCookieを使用する必要がありますか?
おかげ
初心者くさい質問のおかげでレミー、申し訳ありませんがたくさん。 1)TIdHttp1.IOHandler:= IdSSLIOHandlerSocket1を割り当てましたが、「SSLライブラリを読み込めませんでした」というエラーが表示されます。私はTIdHttp1.Intercept:= IdLogFileを単に "Stat Disconnected"と読みました。 2)GetUrlToFile( '/ reports.php?report = variable'、 'test.csv')を使用することをお勧めしますか? ? 3)オブジェクトを漏らすことはどういう意味ですか? @Remy Lebeau - TeamB – notidaho
私のエラーは間違ったSSL dllの可能性が高いと思われます。私はD5で最新のIndy9ライブラリを使用していました。私はdpkをロードし、すべてのコンポーネントを削除し、最新の10をダウンロードし、Fulld5.batを実行しました。私はこれをアップグレードする正しい方法がわからないが、IndyProtocols50がIdSSLOpenSSLHeadersおよびIdSSLOpenSSL、IndyX509を使用またはサポートしていないというさまざまなメッセージが表示される。 – notidaho
これはD5の問題です。私は別の質問として再投稿します:http://stackoverflow.com/questions/7902152/delphi-5-indy-ics-ssl-aroundaroundありがとう – notidaho