共有リンクの最後に?dl = 1コードを追加して、DropboxからZipフォルダをダウンロードしています。dropboxからのHTTPレスポンスzipダウンロードリクエスト(?dl = 1)
接続応答のコンテンツの長さフィールドを除いて、すべてうまく動作します。私はresponse.expectedContentLength値をチェックすると、それは常に私がexpectedContentLengthであった場合didReceiveResponse方法でチェックしてみた
[httpRequest setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];
で応答gzip圧縮を回避しようとしたとして-1
立ち上がる-1と
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:response.URL
cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
timeoutInterval:10];
theRequest.timeoutInterval = 5.0;
theRequest.HTTPMethod = @"HEAD";
NSHTTPURLResponse *res;
NSData * resData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&res error:nil];
long length = res.expectedContentLength;
「長さ」と(response.URLに含まれる)絶対zipファイルのリンクを使用して、ヘッダーのためだけ手動チェックをやって、まだ-1として起動します。
ジップはその場でドロップボックスによって生成されるため、最初の要求ではコンテンツの長さを取得できないことがあります。しかし理論的には、response.URLの値は最終的な圧縮ファイルでなければならず、ヘッダーを要求するには適切なcontentLengthフィールドを返さなければなりません。
アイデア?ここに来て、後で誰のための
これは単にDropboxが(チャンクされた 'Transfer-Encoding'を介して)結果をストリーミングすることであると思われます。私は 'Content-Length'ヘッダーがまったく設定されていないと思います。 (-1がおそらく 'expectedContentLength'のセンチネル値で、それが設定されていないことを示しています) – smarx
smarxが正しく、どちらのリクエストでもDropboxによって' Content-Length'が設定されていません。つまり、ヘッダーを要求すると、適切なcontentLengthフィールドが返されます。 – Greg
実際には、いずれかのヘッダーレスポンスにコンテンツ長を設定しないというDropbox側の欠点(または選択肢)です。彼らの奇妙な... – ladansedesdamnes