2013-11-23 8 views
5

Ich habe Schwierigkeiten, die Suchergebnisse zu durchsuchen und finde in der Dokumentation nichts Konkretes. Ich möchte nur eine Datei herunterladen und im Verzeichnis Dokumente speichern. Die Datei ist vom Typ .plist, aber ich muss den Plist nicht parsen. Wie ich schon sagte, ich muss es nur auf der Festplatte speichern.Wie lade ich eine Datei mit AFNetworking 2.0 herunter?

Benutze ich AFHTTPRequestOperationManager dafür?

Das ist, was ich in der Regel versucht:

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

Wenn ich AFHTTPResponseSerializer verwende ich diese:

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

Wenn ich AFPropertyListResponseSerializer verwende ich diese:

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

Aber ich bin nicht einmal sicher, ob ich die richtige API verwende.

+1

(Diese) [http://stackoverflow.com/questions/8372661/how-to-download-a-file-and-save-it-to-the- documents-directory-with-afnetworking] könnte helfen. – n00bProgrammer

+0

Das verwendet jedoch die alte Version von AFNetworking. Ist das immer noch der empfohlene Weg? – soleil

+0

Versucht, und ich bekomme immer noch Fehler: Fehler Domain = AFNetworkingErrorDomain Code = -1011 "Anfrage fehlgeschlagen: interner Server Fehler (500) – soleil

Antwort

15

Versuchen Sie bitte dieses Beispiel. Hoffe diese Hilfe!

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

etwas anderes gemacht: What's the best way to find the user's Documents directory on an iPhone?

+1

Schreiben Sie einige Erklärung Tooo. –

+1

Sorry für meinen schlechten Stil in Antworten :) Jetzt dies besser? –

+1

können Sie mir bitte sagen, was, wenn die gleiche Anfrage mehrere Male ausgeführt wird? Können wir vor dem Start des Downloads überprüfen, ob es bereits den Prozess für die gleiche Anfrage läuft? –

Verwandte Themen