Je consomme un service Web qui devrait renvoyer un fichier wav. Je capture le résultat dans un objet NSData et l'enregistre dans le directeur des documents locaux. Comment puis-je vérifier que les données sont bien un wav avant de les sauvegarder? S'il y avait une erreur sur le serveur, il peut renvoyer une longue chaîne d'ordures HTML.Validation du type de fichier NSData
Merci!
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:RequestURL
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
NSHTTPURLResponse* response = nil;
NSData *soundData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
//save voicemail file locally
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *destPath = [documentsDirectory stringByAppendingPathComponent:@"returned.wav"];
[fileManager createFileAtPath:destPath contents:soundData attributes:nil];
+1 une réponse d'erreur d'un serveur doit avoir une réponse dans la gamme 400 ou 500. – JeremyP
Parce que la requête peut être "réussie" du point de vue du serveur, la vérification du type MIME est le moyen idéal. Je vous remercie! – mojo
Code définitif: NSHTTPURLResponse * réponse = néant; \t NSData * soundData = [NSURLConnection sendSynchronousRequest: demande returnResponse: & erreur de réponse: & erreur]; // sauvegarder le fichier de messagerie vocale localement NSDictionary * headers = [response allHeaderFields]; NSString * contentType = (NSString *) [en-têtes objectForKey: @ "Content-Type"]; if ([contentType estEqual: @ "audio/x-wav"]) \t NSLog (@ "c'est un fichier wav!"); else \t NSLog (@ "type de réponse inattendue:% @", contentType); – mojo