2010-11-18 3 views
0

wav 파일을 반환해야하는 웹 서비스를 사용하고 있습니다. 결과를 NSData 객체로 캡처하여 로컬 문서 관리자에게 저장합니다.NSData 파일 유형 유효성 검사

데이터를 저장하기 전에 데이터가 실제로 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]; 

답변

2

이 작업을 수행하는 2 방법이있다 (그 중 하나가 당신을 위해 수용 할 수 있기를 바랍니다) :

1) NSHTTPURLResponse의에 statusCode (유형 NSInteger)을 확인는 (200 같아야한다, 모든 경우 확인),

는 에게

2) 내가 잘못 아니에요 경우이어야한다() NSHTTPURLResponse의 MIME 타입 (유형있는 NSString *을 확인 @ "오디오/vnd.wave")를

+0

한 서버에서 오류 응답이 있어야 400 또는 500 범위의 응답. – JeremyP

+0

요청이 서버 관점에서 "성공"할 수 있으므로 MIME 형식을 확인하는 것이 이상적입니다. 고맙습니다! – mojo

+0

최종 코드 : NSHTTPURLResponse * response = nil; \t NSData * soundData = [NSURLConnection sendSynchronousRequest : req returningResponse : & 응답 오류 : & 오류]; // 로컬로 음성 메일 파일 저장 NSDictionary * headers = [response allHeaderFields]; NSString * contentType = (NSString *) [headers objectForKey : @ "Content-Type"]; if ([contentType isEqual : @ "audio/x-wav"]) \t NSLog (@ "wav 파일!"); else \t NSLog (@ "예기치 않은 응답 유형 : % @", contentType); – mojo

관련 문제