如何使用AFNetworking 2.0下载文件

sol*_*eil 5 plist ios afnetworking afnetworking-2

我很难通过搜索结果筛选出如何做到这一点,我在文档中找不到任何具体内容.我只想下载文件并存储在Documents目录中.该文件的类型为.plist,但我不需要解析plist.就像我说的,我只需要将它保存到磁盘.

我是否使用AFHTTPRequestOperationManager?

这是我一直在尝试的:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    //manager.responseSerializer = [AFPropertyListResponseSerializer serializer];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    [manager GET:url parameters:nil
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
             DLog(@"downloaded plist");
         }
         failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             DLog(@"JSON DataError: %@", error);
         }];
Run Code Online (Sandbox Code Playgroud)

如果我使用AFHTTPResponseSerializer,我得到这个:

Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: internal server error (500)"
Run Code Online (Sandbox Code Playgroud)

如果我使用AFPropertyListResponseSerializer,我得到这个:

Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: text/plain"
Run Code Online (Sandbox Code Playgroud)

但我甚至不确定我是否使用了正确的API.

小智 15

请试试这个例子.希望这有帮助!

// Step 1: create NSURL with full path to downloading file
// for example try this: NSString *fileUrl = @"https://pbs.twimg.com/profile_images/2331579964/jrqzn4q29vwy4mors75s_400x400.png";
// And create NSURLRequest object with our URL
NSURL *URL = [NSURL URLWithString:fileUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

// Step 2: save downloading file's name
// For example our fileName string is equal to 'jrqzn4q29vwy4mors75s_400x400.png'
NSString *fileName = [URL lastPathComponent];

// Step 3: create AFHTTPRequestOperation object with our request
AFHTTPRequestOperation *downloadRequest = [[AFHTTPRequestOperation alloc] initWithRequest:request];

// Step 4: set handling for answer from server and errors with request
[downloadRequest setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
            // here we must create NSData object with received data...
            NSData *data = [[NSData alloc] initWithData:responseObject];
            // ... and save this object as file
            // Here 'pathToFile' must be path to directory 'Documents' on your device + filename, of course
            [data writeToFile:pathToFile atomically:YES];
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"file downloading error : %@", [error localizedDescription]);
        }];

// Step 5: begin asynchronous download
[downloadRequest start];
Run Code Online (Sandbox Code Playgroud)

其他:在iPhone上找到用户的Documents目录的最佳方法是什么?