2

我有一个来自 cancelByProducingResumeData 的 resumeData 的字典:如下所示,我想知道如何使用 NSURLSessionResumeCurrentRequest 为 HTTPHeaderField 添加Value。

我想知道如何将 NSURLSessionResumeCurrentRequest 的 NSData 转换为 NSURLRequest。

2014-11-11 13:11:30.545 xxxxXXXXX[77997:14163248] resumeInfo => { NSURLSessionDownloadURL = " http://xxx.xxx.xxx/webdav/content/admin/201407/ttp.mp4NSURLSessionResumeEntityTag = 41220469dd0d761e33125751d386d9b1; NSURLSessionResumeInfoLocalPath = "/Users/Library/Developer/CoreSimulator/Devices/0F13C2EC-4B9C-4FB4-AD78-7A309C4C65F2/data/Containers/Data/Application/28925A91-9DDE-4041-A1F5-A35387E9115E/tmp/CFNetworkDownload_NKJuq1.tmp"; NSURLSessionResumeInfoVersion = 1; NSURLSessionResumeOriginalRequest = < 24636c61 73736e61 6d655824 636c6173 73657355 4e535552 4ca24041 554e5355 524c584e 534f626a 65637423 404e0000 00000000 10000923 00000000 00000000 23000000 00000000 0013ffff ffffffff ffffd23c 3d494a5c 4e535552 4c526571 75657374 a24b4c5c 4e535552 4c526571 75657374 584e534f 626a6563 745f100f 4e534b65 79656441 72636869 766572d1 4f505472 6f6f7480 01000800 11001a00 23002d00 32003700 45004b00 78007c00 7f008300 86008a00 91009400 98009b00 9f00a200 a600aa00 ad00b000 b400b700 bb00be00 c200c500 c700c900 cb00cd00 cf00d100 d300d500 d700d900 db00dd00 df00e100 e300e500 e700e900 eb00ed00 ef00f000 f700ff01 0b010d01 0f011101 76017b01 86018f01 95019801 9e01a701 b001b201 b301bc01 c501ce01 d301e001 e301f001 f9020b02 0e021300 00000000 00020100 00000000 00005100 00000000 00000000 00000000 000215>; NSURLSessionResumeServerDownloadDate = "2014 年 7 月 25 日星期五 04:36:

4

1 回答 1

4

我尝试使用以下代码更改我的请求,非常成功!;)

- (NSData *)regenerateResumeData:(NSData *)originData
{
    NSString *error;
    NSPropertyListFormat format;
    NSMutableDictionary* plist = [NSMutableDictionary dictionaryWithDictionary:[NSPropertyListSerialization propertyListFromData:originData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error]];

    NSData *currentRequest = [plist objectForKey:@"NSURLSessionResumeCurrentRequest"]; 
    NSURLRequest *request = [(NSURLRequest *)[NSKeyedUnarchiver unarchiveObjectWithData:currentRequest] copy];
    NSMutableURLRequest *mutableRequest = [request mutableCopy];
    [mutableRequest addValue:[plist objectForKey:@"NSURLSessionResumeEntityTag"] forHTTPHeaderField:@"If-Match"];
    [mutableRequest addValue:[NSString stringWithFormat:@"bytes=%@-", [plist objectForKey:@"NSURLSessionResumeBytesReceived"]] forHTTPHeaderField:@"Range"];
    request = [mutableRequest copy];

    NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:request];

    [plist removeObjectForKey:@"NSURLSessionResumeCurrentRequest"];
    [plist setValue:archivedData forKey:@"NSURLSessionResumeCurrentRequest"];

    return [NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
}
于 2014-11-12T00:17:56.450 回答