Resumable Downloads メモ

Resumable Downloads メモ
Q:私のアプリは、HTTP経由で大きなファイルをダウンロードします。
どのように私は部分的に完了したダウンロードを再開することができますか?

:答えはあなたのターゲットプラットフォームに依存します:

あなたがMac OS Xで作業している場合、それはNSURLDownloadクラスを使用してダ
ウンロードを再開するのは簡単です。この詳細については、URLのローディングシステム·
プログラミング·ガイドを参照してください。
NSURLDownloadは、iOS上ではサポートされません。あなたはブックスアプリならしかし、
ニューススタンドダウンロード再開のサポートが組み込まれています。詳細についてはブック
スKitフレームワークのリファレンスを参照してください。
あなたは一般的なiOSのアプリなら、あなたは、以下に説明するように、自分でダウンロード
を再開するためのコードを記述する必要があります。
HTTPダウンロードを再開すると、それほど難しいものではありませんが、あなたはいくつかの
重要なHTTPの概念を理解する必要があります。
エンティティタグ - これは、特定のリソースの特定のバージョンを表し、サーバが提供する
一意の識別子であり、誰かがサーバー上のリソースを変更した場合、エンティティタグが変更されます。
Rangeヘッダ - これは、リソースから指定されたバイトの範囲を要求することができます。
If-Rangeヘッダ - このヘッダは、あなただけのエンティティタグが変更されていない場合は、
リソースからのバイトの範囲を取得したいことを指定します。

注:これらの概念の詳細については、RFC2616を参照してください。

ダウンロードを再開するための基本戦略は、次のとおりです。

あなたが最初のダウンロードを行うと、リソースに関連付けられたエンティティタグを保存します。
データをディスクに保存すると、どのくらいのデータが有効であることを覚えている。
ダウンロードを再開するために来たときに、エンティティタグとは、保存したデータの量を取得し、
範囲とIf-Rangeヘッダを介して要求にこれらの値を適用します。
リクエストを実行します。それが成功するか(そして、あなたは、リソースの残りのバイトを受け取
ることができます)または、それは(あなたが最初から全体のリソースを取得する必要があり、その場合に失敗します)。
サーバーがエンティティタグをサポートしていない場合は、最終更新日時と同じようなことを行うことができます。

ダウンロード再開のサポートに必要な機能はオプションであり、警告、サーバがそれらをサポートする必要はありません。
特定のサーバーを対象にしている場合は、そのサーバーに合わせて調整してコードをすることができ、
あなたの目標は、任意のサーバーからダウンロードを再開する場合しかし、あなたはすべてのサーバと
あなたのコードの互換性を確保する方法を学ぶためにRFC 2616を参照してください読んでください。

この具体的な例では、Safariは、お使いのMacにダウンロードを再開する方法を見て
("パケットトレースの取得"をテクニカルQ&A QA1176を参照)パケットトレースを使用することができます。
リスト1は、典型的な再開要求を示しています。

Rangeヘッダーを使用すると、オフセットは4041400で始まるデータを取得したいサーバーに指示します。
If-Rangeヘッダは、サーバがクライアントに付属のエンティティタグ(つまり、":
1319461845968f3f3e86e0339ce722170ae656bc73"である)が得られたので、データが変更されていない場合にのみ、
データをサーバーに伝えたい。

HTTPステータス(206)応答が唯一のリソースのサブセットが含まれていることがわかります。
Content-Rangeヘッダは、サーバが返送する(1087036999バイトまでをバイト4041400)とリソースの合計の長さ
(1087037000)されているかを正確にリソースの範囲がわかります。最後に、Content-Lengthヘッダは、
サーバがこの特定の応答で返されて、何バイトかを示します。
スポンサーサイト
姉妹サイトだよ! よかったらみてね!

コメントの投稿

非公開コメント

twitter
twitter アカウント @drum_kuroneko 気軽にフォローしてください。
誰でも簡単に開発ができます!!
人気ナンバー1
自己紹介

yuutyan0205

プロガー:yuutyan0205
きままな自由人です。

たまにプログラミングを行っています。

仕事ください・・・

開発者アプリ一覧 気になったらダウンロードしてください。
開発環境おすすめ
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
月別アーカイブ
カテゴリ
アクセスランキング
[ジャンルランキング]
コンピュータ
826位
アクセスランキングを見る>>

[サブジャンルランキング]
マック
50位
アクセスランキングを見る>>
訪問者数
現在の訪問者数
現在の閲覧者数:
全記事表示リンク

全ての記事を表示する

相互リンク希望の方とご質問ある方ご連絡ください。

名前:
メール:
件名:
本文: