Httpによるファイルのダウンロードエラー

1,644 views
Skip to first unread message

Takashi Ohashi

unread,
Mar 5, 2023, 3:21:52 AM3/5/23
to Japan RAD Studio User Group
idHTTPよるファイルのダウンロードですが、自社でのテストでは問題ありませんが、取引先の1つのみがエラーでダウンロードできないという連絡をうけました。

テスト用プログラムとして
procedure TForm1.btn1Click(Sender: TObject);
var
  Stream: TFileStream;
  SaveFile: string;
  StList: TStringList;

begin
 //ファイルをダウンロードして保存するファイル
  SaveFile := 'C:\DL\version.ini';
  Stream := TFileStream.Create(SaveFile, fmCreate);
  StList := TStringList.Create;
  try
    try
      try
        //URLは定数で指定
        IdHTTP1.Get(URL, Stream);
      finally
        FreeAndNil(Stream);
      end;

    except
      on E: Exception do
      begin
        mmo1.Lines.Add('ステータスコード' + IntToStr(IdHTTP1.ResponseCode));
        mmo1.Lines.Add('Error');
        mmo1.Lines.Add(E.Message);
        Exit;
      end;
    end;

 //ダウンロードが完了した場合
    if FileExists(SaveFile) then
    begin
      mmo1.Lines.Add('ステータスコード' + IntToStr(IdHTTP1.ResponseCode));
      mmo1.Lines.Add('ダウンロード完了');
      //Stringlistで内容をメモコンポーネントに表示する。
      StList.LoadFromFile(SaveFile);
      mmo1.Lines.Add(StList.Text);
    end;
   else
   begin
     mmo1.Lines.Add('ダウンロード失敗');
   end;

  finally
    StList.Free;
  end;
end;

mmo1はMEMO1のことです。

Idhttpでファイルをダウンロードして成功の場合は、Memo1に
****************************
ステータスコード200
ダウンロード完了
[VERSION]
VERSION=3.2400
****************************

と表示されます。
しかし、その取引先では、
****************************
ステータスコード1
Error
Socket エラー # 10060
接続がタイムアウトしました。
****************************
と表示されるようです。

で、10060を探しますと、「接続がタイムアウトしました。
接続されたパーティーが一定期間後に適切に応答しなかったか、接続されたホストが応答に失敗したために確立された接続が失敗したため、接続の試行が失敗しました。」との説明で意味がよく分かりません。

どのような状態なのか、ご存じでしたら、お教えいただきたいのですが。
よろしくお願いいたします。

大橋


Takashi Ohashi

unread,
Mar 5, 2023, 3:24:54 AM3/5/23
to Japan RAD Studio User Group
補足です。

Delphi11.3 Enterprizeです。

2023年3月5日(日) 17:21 Takashi Ohashi <ohas...@gmail.com>:

Takahiro Kawakami

unread,
Mar 5, 2023, 9:52:10 PM3/5/23
to radstu...@googlegroups.com
外してるかもしれませんが、プロキシを使ってる、ファイアウォールでそのサイトへのアクセスができない、等は確認済みでしょうか。

かわかみ

2023年3月5日(日) 17:21 Takashi Ohashi <ohas...@gmail.com>:
idHTTPよるファイルのダウンロードですが、自社でのテストでは問題ありませんが、取引先の1つのみがエラーでダウンロードできないという連絡をうけました。

--
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/radstudio-jp/CABwGUboEZ5rEUQPg8ysv%3DWXFFBKfBAePW4PWJbqTc4aVxTDC9g%40mail.gmail.com にアクセスしてください。

Hikaru Fukushi

unread,
Mar 6, 2023, 2:20:59 AM3/6/23
to radstu...@googlegroups.com
大橋さん、こんにちは。福士です。

> Socket エラー # 10060
> 接続がタイムアウトしました。
> ****************************
> と表示されるようです。
>
> MSの「Windows ソケットのエラー コード」
> https://learn.microsoft.com/ja-jp/windows/win32/winsock/windows-sockets-error-codes-2
> で、10060を探しますと、「接続がタイムアウトしました。

文字通りHTTP通信でタイムアウトが発生した、ということです。原因は
おそらくネットワーク側にあるものと思われます。以下のような感じで
検証してみてはいかがでしょうか。

・Edgeなどwebブラウザでそのファイルをダウンロードしてみる。
・Wireshark https://www.wireshark.org/ のようなツールでHTTPの
通信をキャプチャして、うまくいく場合といかない場合、Indyで
ダウンロードした場合とwebブラウザでダウンロードした場合で、
HTTP通信のシーケンスなどで違いがあるかを確認する。
・Indy側の受信タイムアウトの値を延長してみる。


参考にしてください。


+=========+=========+=========+=========+=========+=========+=========+
東洋テクニカルシステム株式会社 システム開発部 福士 光
Hikaru Fukushi (Toyo Technical System Inc.)
mailto:fuk...@tts-inc.co.jp
+=========+=========+=========+=========+=========+=========+=========+


Takashi Ohashi

unread,
Mar 6, 2023, 3:27:11 AM3/6/23
to radstu...@googlegroups.com
福士さま
いつもありがとうございます。

こちらもDNSの調査ツールやもろもろと作り提供しています。
しかし、社外のネットワークのため、こちらで検証することもできず、
先方のシステム部に状況を教えてほしいと担当者へお願いをしましたが、
そんなことで、いちいち聞けないと。
初めての事態で戸惑っています。
私自身、早く、先方のニーズにあうものを作るため、お互いに協力すべきだと思っています。

作ってはダメの繰り返しで、無駄な時間ばかり浪費している感じですが、
このようなケースは多いのでしょうか?

大橋



2023年3月6日(月) 16:20 Hikaru Fukushi <fuk...@tts-inc.co.jp>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/radstudio-jp/20230306162045.0FDB.A61021CE%40tts-inc.co.jp にアクセスしてください。

Hikaru Fukushi

unread,
Mar 6, 2023, 3:42:57 AM3/6/23
to radstu...@googlegroups.com
大橋さん、こんにちは。福士です。

> しかし、社外のネットワークのため、こちらで検証することもできず、
> 先方のシステム部に状況を教えてほしいと担当者へお願いをしましたが、
> そんなことで、いちいち聞けないと。
> 初めての事態で戸惑っています。
> 私自身、早く、先方のニーズにあうものを作るため、お互いに協力すべきだと思っています。

まぁこれはお客さんとの関係なんで、ケースバイケースとしか言いようが
ありませんが、『うち(社内)では検証して起きないんで、環境要因じゃ
ないんですか?*そちらの*検証には喜んでご協力させていただきますよ』
とか突き放す気がしますね。契約次第かな。


ところでTIdHttpの受信タイムアウトはReadTimeoutプロパティ(public
なのでオブジェクトインスペクタには表示されない)で指定できますが、
ここに明示的に値を指定してもだめなんですか?


---

Takahiro Kawakami

unread,
Mar 6, 2023, 9:55:23 PM3/6/23
to radstu...@googlegroups.com
福士さんの仰る通り、 契約と双方のやる気次第で対応が変わると思います。

コマンドプロンプトでping通るか
ブラウザやWindowsの設定でプロキシが設定されているか
くらいは担当者に確認してもらってもいい気がします。

プロキシだっとして、 プロキシ情報があるなら同じ設定をアプリケーション側で実装すれば行けそうな気がします。 (pacファイルで定義されているとちょっと面倒ですね)

川上

2023年3月6日(月) 17:43 Hikaru Fukushi <fuk...@tts-inc.co.jp>:
--
このメールは Google グループのグループ「Japan RAD Studio User Group」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msgid/radstudio-jp/20230306174245.0FE7.A61021CE%40tts-inc.co.jp にアクセスしてください。

Takashi Ohashi

unread,
Mar 6, 2023, 10:30:55 PM3/6/23
to radstu...@googlegroups.com
はい、これ以上は弊社の技術力では対応できないので、
辞退させていただきます。
と話したら、態度が変わりました。

2023年3月7日(火) 11:55 Takahiro Kawakami <xyzabc....@gmail.com>:
このメールは Google グループのグループ「Japan RAD Studio User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには radstudio-jp...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/radstudio-jp/CAJ%3DwJ4Yy32JWyZG8TTuyXBATvNy6xbmHz3VpmHFLpRm3fK-MhQ%40mail.gmail.com にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages