【问题标题】:How to addValue forHTTPHeaderField from NSURLSessionResumeCurrentRequest of resumeData?如何从resumeData的NSURLSessionResumeCurrentRequest中为HTTPHeaderField添加值?
【发布时间】:2014-11-12 00:12:34
【问题描述】:

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

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

2014-11-11 13:11:30.545 xxxxXXXXXX[77997:14163248] resumeInfo => { NSURLSessionDownloadURL = "http://xxx.xxx.xxx/webdav/content/admin/201407/ttp.mp4"; NSURLSessionResumeBytesReceived = 50737920; NSURLSessionResumeCurrentRequest = ; NSURLSessionResumeEntityTag = 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 = ; NSURLSessionResumeServerDownloadDate = "2014 年 7 月 25 日星期五 04:36:22 GMT";

【问题讨论】:

    标签: ios nsurlrequest nsurlsession nsurlsessiondownloadtask header-fields


    【解决方案1】:

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

    - (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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2021-12-06
      相关资源
      最近更新 更多