스트리밍 모드에서 http로 선형 파일을 업로드하려고합니다. 아이디어는이 단계를 동시에 수행합니다. 1) 스레드 1 : 오디오 파일을 녹음하고 임시 파일에 저장합니다. 2) 스레드 2 : 임시 파일에서 n 바이트를 가져 와서 http 서버로 보냅니다.오디오 업로드 - http 스트리밍
http 스트림을 작성하는 방법은 무엇입니까? CFHTTPStream에서 쓰기 메소드를 볼 수 없었습니다. 읽기 전용 : 소켓을 사용해야합니까? 감사합니다 !!! (NSStreamStatus) streamStatus을 -
내 실제 코드는이 솔루션은 NSInputStream의 서브 클래스를 생성하고, 방법, 개폐 구현, 읽기, hasBytesAvailable을 잊지 않는 것입니다
CFWriteStreamRef stream;
NSString *strUrl = @"myurl";
NSURL *url = [[[NSURL alloc] initWithString:strUrl] retain];
CFStringRef requestMethod = CFSTR("GET");
CFHTTPMessageRef message= CFHTTPMessageCreateRequest(kCFAllocatorDefault, requestMethod, (CFURLRef)url, kCFHTTPVersion1_1);
CFHTTPMessageSetHeaderFieldValue(message, CFSTR("Content-Type"),
CFSTR("multipart/form-data"));
stream = ?? //CFReadStreamCreateForHTTPRequest(NULL, message);
CFRelease(message);
//other headers...
if (CFWriteStreamSetProperty(stream, kCFStreamPropertyHTTPShouldAutoredirect, kCFBooleanTrue) == false)
{
NSLog(@"Error");
return NO;
}
//
// Open the stream
//
if (!CFWriteStreamOpen(stream))
{
CFRelease(stream);
NSLog(@"Error");
return NO;
}
CFStreamClientContext context = {0, self, NULL, NULL, NULL};
CFWriteStreamSetClient(stram, kCFStreamEventHasBytesAvailable | kCFStreamEventErrorOccurred | kCFStreamEventEndEncountered,
RSWriteStreamCallBack,
&context);
CFWriteStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);