2016-12-06 9 views
0

У меня есть старый проект и попробуйте обновить его от AFNetworking 2. * до AFNetworking 3.0. Все работает нормально, за исключением загрузки файлов m4r. Старый код используется что-то вроде этого:AFNetworking 3.0 скачать * .m4r файл

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URLString]]; 
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; 
AFHTTPRequestOperation* requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
requestOperation.responseSerializer = [AFJSONResponseSerializer serializer]; 
requestOperation.outputStream = [NSOutputStream outputStreamToFileAtPath:outPath append:NO]; 
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation* operation, id responseObject) { 
      // 
     } failure:^(AFHTTPRequestOperation* operation, NSError* error) { 
    // 
}]; 
[requestOperation setDownloadProgressBlock:downloadProgressBlock]; 
[requestOperation start]; 

я не уверен, как двигаться логику потока логики вывода на AFNetwroking 3,0, так что теперь я оставил его и переделал старый код:

AFHTTPSessionManager* manager = [AFHTTPSessionManager manager]; 
manager.responseSerializer = [AFJSONResponseSerializer serializer]; 
[manager.responseSerializer setAcceptableContentTypes: [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromArray: @[@"video/mp4", @"audio/mpeg"]]]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
[manager.requestSerializer setValue: @"gzip" forHTTPHeaderField: @"Accept-Encoding"]; 
[manager GET: URLString parameters: nil progress: downloadProgressBlock success:^(NSURLSessionTask* task, id responseObject) { 
     // 
    }   failure:^(NSURLSessionTask* operation, NSError* error) { 
     // 
}]; 

линия с установкой acceptableContentTypes добавляется, потому что без него я получаю сообщение об ошибке с описанием:

«Запрос не удался: неприемлемым Content-Type: видео/MP4»

Теперь, после исправления этой ошибки, я получаю

«Невозможно преобразовать данные в строку, используя найденную кодировку. Данные может быть поврежден «

Что я делаю неправильно

ответ

0

мне удалось исправить с загрузки задачу Мой код выглядит следующим образом:.?.

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URLString]]; 
[request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; 

AFHTTPSessionManager* manager = [AFHTTPSessionManager manager]; 
NSURLSessionDownloadTask* downloadTask = [manager downloadTaskWithRequest: request progress: downloadProgressBlock destination:^NSURL*(NSURL* targetPath, NSURLResponse* response) { 
    return [[NSURL alloc] initFileURLWithPath: outPath]; 
}              completionHandler:^(NSURLResponse* response, NSURL* filePath, NSError* error) { 
    completion(error == nil, error); 
}]; 
[downloadTask resume];