xmlファイルをURLDownloadToFile()でDLできません。?

解決


武田  2006-09-22 23:47:30  No: 23332

いつもお世話になっております。環境はDelphi6Personalです。
Webページのソース、ファイルをURLDownloadToFile関数でDLしております。
ところがダウンロードできないページが散見されるようになり面食らっております。
ソールを見ると'<?xml version="1.0" encoding="shift_jis"?>'から始まるページのようです。
これがXMLファイルというのでしょうか?(勉強中・・)
URLDownloadToFile関数が対応していなということなのでしょうか?
コード例です。
 URLDownloadToFile(nil, PAnsiChar('http://kakinotane.s7.xrea.com/delphi/d2/toc.html'), PAnsiChar('Temp.html'), 0, nil);
代替え手段があるのでしたらご指導頂けないでしょうか。
よろしくお願いいたします。m(_ _)m


そうね  2006-09-24 17:34:25  No: 23333

そのURLの応答ヘッダを見ると、
Cache-Control: no-cache
Proxy-Connection: close
Connection: close

ローカル串を通した場合は URLDownloadToFileでも取得できるんで no-cacheが問題かな。
ダイタイ手段としては WinInetか Indyというところか…


もにゃ  2006-09-25 22:36:55  No: 23334

Indyはめっさ簡単です。
インストール方法はネットで調べてください。
Xrayさんの所にあったかな?

uses
 IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP

procedure GetFile(URL, Path: String);
var mstream:TMemoryStream;
    IdHTTP: TIdHTTP;
begin
  IdHTTP:=TIdHTTP.Create(nil);
  mstream:=TMemoryStream.Create;
  IdHTTP.Get(URL,mstream);
  mstream.SaveToFile(Path);
  mstream.Free;
  IdHTTP.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFile('http://kakinotane.s7.xrea.com/delphi/d2/toc.html', 'aaa.html');
end;


武田  2006-09-26 01:42:13  No: 23335

そうね様、もにゃ様ご指導ありがとうございました。
Webダウンロードに関係のあるIndyなるもの以前聞いたことがあり、そのごネットで調べましたが、Indyの概要がつかめませんで放置していました。
今回、具体的にIndy が出てきました。
もにゃ様のサンプルでもIndyなる名前が出てきませんが、
初歩的な質問ですが、
1Indyはネットからファイルを取得できるフリーのコンポーネントである。
2Indyをダウンロードして、Delphiにインストールする。
3すると、もにゃ様のサンプルのようなユニットを登録すればIndyのメソッドなどでファイルのダウンロードができる。
というような解釈でいいのでしょうか。
もしそうなら、これから邁進するつもりです。
馬鹿な質問ですが、よろしくお願いいたします。m(_ _)m


もにゃ  2006-09-26 03:36:29  No: 23336

ググッてたら良いのがありました。
http://homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm
これ参考にしてわからなかったらまた書き込んでください。


もにゃ  2006-09-26 03:39:01  No: 23337

補足ですが
Automatic Installも無料です^^;
ただ私もAutomatic Installは使用してません。


武田  2006-09-26 06:09:29  No: 23338

もにゃ様、感謝します。
http://homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm
で概要がわかりました。要するにコンポーネントですね。
有料版には添付されているようなことをどこかに書いてありました??。
それと、メール送受信や、プロクシの記事はありますが、ココだけ見ていたらWebのダウンロード機能など見過ごしてしまうところでした。
もにゃ様のサンプルコードのおかげでその機能がわかりました。あちこちにBorlandと書いてあるので純正品かなと思いましたが、よほどDelphiとの融合性があるのですね。安心して使えそうです。
ありがとうございました。これから勉強していきます。
では。


武田  2006-09-26 07:12:20  No: 23339

もにゃ様、解決後すみませんが、一つ質問させてください。
IndyをDLしたフォルダMWSをLibフォルダの下に移動して、インストールしました。
uses
 IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP
が見つかりません。とエラーになるのですが、後、何かする必要があるのでしょうか。フォームにアイコンを貼り付けるとか、パスを通すとか。
複数のパレットが作成され、たくさんのアイコンが作成されています。
できればご指導頂きたいのですが。よろしくお願いいたします。m(_ _)m


武田  2006-09-26 07:40:00  No: 23340

もにゃ様お騒がせしました。
System、Core、Protocolsフォルダにライブラリパスを通したら作動しました。
本当にありがとうございました。
これから詳細に勉強させて頂きます。
では。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加