統計情報(30日間)


最新情報をツイート

人気の投稿

NSMutableURLRequest で前回途中で終わったダウンロードを再開する、もしくは大きなファイルを分割してダウンロードする方法

このエントリーをはてなブックマークに追加



こんな感じで HTTPヘッダに Range を指定すればいい。
NSString *requestRange = [NSString stringWithFormat:@"bytes=%d-", downloadedBytes];
    [req setValue:requestRange forHTTPHeaderField:@"Range"];

レスポンスは 206(Partial Content)が返る。ヘッダを見てどの部分のデータが戻ってきたかを判断する。以下、抜粋を転載。
switch (httpResponse.statusCode) {
        case 206: {
            NSString *range = [httpResponse.allHeaderFields valueForKey:@"Content-Range"];
            NSError *error = nil;
            NSRegularExpression *regex = nil;
            // Check to see if the server returned a valid byte-range
            regex = [NSRegularExpression
                regularExpressionWithPattern:@"bytes (\\d+)-\\d+/\\d+"
                                     options:NSRegularExpressionCaseInsensitive
                                       error:&error];

            NSTextCheckingResult *match =
                     [regex firstMatchInString:range
                                       options:NSMatchingAnchored
                                         range:NSMakeRange(0, range.length)];
            if (match.numberOfRanges < 2) {
                [fh truncateFileAtOffset:0];
                break;
            }
   
            NSString *byteStr = [range substringWithRange:[match rangeAtIndex:1]];
            NSInteger bytes = [byteStr integerValue];



Leave a Reply