2016-05-18 2 views
1

共有リンクの最後に?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フィールドを返さなければなりません。

アイデア?ここに来て、後で誰のための

+1

これは単にDropboxが(チャンクされた 'Transfer-Encoding'を介して)結果をストリーミングすることであると思われます。私は 'Content-Length'ヘッダーがまったく設定されていないと思います。 (-1がおそらく 'expectedContentLength'のセンチネル値で、それが設定されていないことを示しています) – smarx

+1

smarxが正しく、どちらのリクエストでもDropboxによって' Content-Length'が設定されていません。つまり、ヘッダーを要求すると、適切なcontentLengthフィールドが返されます。 – Greg

+0

実際には、いずれかのヘッダーレスポンスにコンテンツ長を設定しないというDropbox側の欠点(または選択肢)です。彼らの奇妙な... – ladansedesdamnes

答えて

0

私は(ちょっと目的を敗北)完全にそれをダウンロードする短い、それを得るための方法を見つけるためにやったことがなかったので、それはそれです。 これはあなたがアクセスできないものです(16/06/16に書かれています、読んだときに再度チェックしてください)。 Dropboxは、ZIP形式のフォルダをダウンロードするときにその特定のヘッダを設定しません。

関連する問題