5

I am having a hard time sifting through search results for how to do this and I can't find anything concrete in the documentation. I just want to download a file and store in the Documents directory. The file is of type .plist, but I don't need to parse the plist. Like I said I just need to save it to disk.

Do I use AFHTTPRequestOperationManager for this?

This is what I've been trying in general:

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

If I use AFHTTPResponseSerializer I get this:

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

If I use AFPropertyListResponseSerializer I get this:

Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: text/plain"

But I'm not even sure I'm using the correct API.

soleil
  • 12,133
  • 33
  • 112
  • 183
  • 1
    (This) [http://stackoverflow.com/questions/8372661/how-to-download-a-file-and-save-it-to-the-documents-directory-with-afnetworking] might help. – n00bProgrammer Nov 23 '13 at 06:13
  • That uses the old version of AFNetworking though. Is that still the recommended way? – soleil Nov 23 '13 at 06:17
  • Tried that and I still get Error: Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: internal server error (500) – soleil Nov 23 '13 at 06:59
  • Recommended way for downloading files with AFNetworking 2.0 - https://github.com/AFNetworking/AFNetworking#creating-a-download-task – Kyr Dunenkoff Nov 23 '13 at 07:58
  • http://stackoverflow.com/questions/19295696/download-file-using-afnetworking-on-ios-6 – n00bProgrammer Nov 23 '13 at 08:20

1 Answers1

15

Please, try this example. Hope this help!

// 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];

Something else: What's the best way to find the user's Documents directory on an iPhone?

Community
  • 1
  • 1