ios - 从ASIHTTPRequest到AFNetworking

标签 ios objective-c afnetworking

我正在关注http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial上有关多线程的教程。在本教程中,使用了ASIHTTPRequest,我发现AFNetworking现在已经成为标准。

我正在尝试使用此块下载一个zip文件:

  __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:sourceURL];
    [request setCompletionBlock:^{
        NSLog(@"Zip file downloaded.");
        NSData *data = [request responseData];
        [self processZip:data sourceURL:sourceURL];        
    }];

我将如何在AFNetworking中做到这一点?我需要使用类似的东西吗?
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
    NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
    return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
    NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];

在本教程中,我需要以NSData的形式下载,而在AFNetworking中,它正在使用NSURlResponse。

关于此的任何指示都是很棒的。谢谢 :)

最佳答案

我会认真去看看关于NSURLSession的Apple文档。在NSURLSession之前,使用NSURLConnection配置一个简单的上载/下载任务有点麻烦(至少可以这么说),因此AFNetworking变得非常流行……理所应当。

但是NSURLSession已修复了大部分问题,总的来说,相对于第三方了解真实的API是一个好主意(并且不要无视AFNetworking)。

NSURLSession的学习曲线降低了很多,以至于它不比学习AFNetworking差很多……至少是恕我直言。

为了更具体地说明上述问题,我相信您只需用等效的NSURLSessionManager调用替换上述AFURLSessionManager调用即可。

关于ios - 从ASIHTTPRequest到AFNetworking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30693178/

相关文章:

ios - 看起来像 UIAlertView 的自定义 View

iPhone 开发测试版?

ios - 使用 xcode 在 ios 应用程序上测试登录

ios - 如何将 AFOAuth1Client 与 AFIncrementalStore 一起使用

objective-c - 是否可以使用 Restkit 安装 AFNetworking 2.0

ios - 使用 CLPlacemark、administrativeArea、iOS6/iOS7 改变内容

ios - Objective-c 中的 class_replaceMethod 不适用于 Swift 类

ios - UIView 未显示在 Storyboard 上

ios - 从 UIView drawViewHierarchyInRect 获取黑色(空)图像 :afterScreenUpdates:

ios - 我如何在 Objective-C 中模拟这个 curl 语句?