Iphone NSData文件类型验证

Iphone NSData文件类型验证,iphone,objective-c,web-services,macos,nsdata,Iphone,Objective C,Web Services,Macos,Nsdata,我正在使用一个应该返回wav文件的web服务。我将结果捕获到NSData对象中,并将其保存到本地documents director 如何在保存数据之前验证数据是否确实是wav?如果服务器上出现错误,它可能会返回一长串HTML垃圾 谢谢 NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:RequestURL

我正在使用一个应该返回wav文件的web服务。我将结果捕获到NSData对象中,并将其保存到本地documents director

如何在保存数据之前验证数据是否确实是wav?如果服务器上出现错误,它可能会返回一长串HTML垃圾

谢谢

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) 检查NSHTTPURLResponse的状态代码(NSInteger类型)(如果一切正常,应等于200)


2) 检查NSHTTPURLResponse的MIME类型(类型NSString*)(如果我没有错,应该是@“audio/vnd.wave”)

+1服务器的任何错误响应都应该有400或500范围的响应。因为从服务器的角度来看,请求可能“成功”,所以检查MIME类型是理想的方法。非常感谢。最终代码:NSHTTPURLResponse*response=nil;NSData*声音数据=[NSURLConnection sendSynchronousRequest:req returningResponse:&响应错误:&错误]//本地保存语音邮件文件NSDictionary*headers=[response allHeaderFields];NSString*contentType=(NSString*)[headers objectForKey:@“Content Type]”;如果([contentType isEqual:@“audio/x-wav”])NSLog(@“这是一个wav文件!”);else NSLog(@“意外响应类型:%@”,contentType);