他のライブラリについてコメントすることはできませんが、Indy はあなたが求めるものすべてをサポートしています。
サーバーがサポートしている場合、TIdHTTP
コンポーネントはバイト範囲を使用してファイルをダウンロードできます。このメソッドを使用して、サーバーが特定の URL のヘッダーをTIdHTTP.Head()
返すかどうかを確認できます。Accept-Ranges: bytes
その場合は、その URL からデータをダウンロードするときに、必要に応じてTIdHTTP.Request.ContentRangeStart
およびTIdHTTP.Request.ContentRangeEnd
プロパティを目的のバイト オフセットに設定できます。リソースの複数の部分を同時にダウンロードするには、それぞれが独自のTIdHTTP
コンポーネントを持つ複数のスレッドを並行して実行するだけです。次に、複数の部分をダウンロードして一時ファイルを分離し、終了時にそれらを最終ファイルにマージするか、事前にサイズ設定された単一のファイルを作成してから、書き込み先TFileStream
の開始オフセットで複数のオブジェクトを開く必要があります。 TIdHTTP
.
TIdHTTP
クッキーをサポートします。TIdCookieManager
コンポーネントをTIdHTTP.CookieManager
プロパティに割り当てることも、未割り当てのままにして内部でオブジェクトTIdHTTP
を作成することもできます。TIdCookieManager
どちらの方法でも、TIdHTTP.AllowCookies
プロパティを True に設定します。
Web サイトへのログインは、サーバーが HTTP ベースの認証と WebForm ベースの認証のどちらを使用しているかに応じて、2 つの異なる方法のいずれかで実行されます。
HTTP 認証の場合、 andやuntなどの目的のIdAuthentication...
ユニットをuses
句に追加して、個々の認証クラスを に登録し、必要に応じておよびプロパティを設定します。WebServer がリクエスト中に認証を要求した場合、は適切なクラスを選択し、それを使用して指定された資格情報でログインします。サーバーが資格情報を拒否すると、資格情報を変更して再試行する機会を与えるために、イベントが発生します。IdAuthentacationDigest
IdAuthenticationNTLM
IdAllAuthentications
TIdHTTP
TIdHTTP.Request.UserName
TIdHTTP.Request.Password
TIdHTTP
TIdHTTP.OnAuthorization
WebForm 認証の場合、フォーマットされた POST リクエストをポストするメソッドにTIdMultipartFormDataStream
渡すことができるクラスがあります。TIdHTTP.Post()
multipart/form-data
TIdHTTP
Indy 10 では gzip ファイルと deflate 圧縮ファイルをサポートしています ( TIdHTTP
Iny 9 以前では圧縮をサポートしていません)。TIdZLibCompressorBase
などの派生コンポーネントをTIdCompressorZLib
プロパティTIdHTTP.Compressor
に割り当てることができ、適切な要求ヘッダーの送信やサーバーの応答ヘッダーの確認TIdHTTP
など、すべての詳細を処理します。Accept-Encoding
Transfer-Encoding
TIdHTTP
OnWorkBegin
、OnWork
、およびOnWorkEnd
進行状況バーなどに使用できるイベントがあります。OnWorkBegin
イベントには、既知の場合は転送される合計バイト数を指定するパラメーターAWorkCountMax
があり、それ以外の場合は 0 になります (ヘッダーを使用する HTTP 応答はそれに応じてContent-Length
設定されますが、ヘッダーを使用する HTTP 応答は設定されません)。イベントには、値に関係なく、これまでに転送されたバイト数を指定するパラメーターがあります。AWorkCountMax
Transfer-Encoding: chunked
OnWork
AWorkCount
AWorkCounMax