httpの下でリニアファイルをストリーミングモードでアップロードしようとしています。 考えてみましょう。 1)スレッド1:オーディオファイルを録音してテンポラリファイルに保存します 2)スレッド2:テンポラリファイルからnバイトを取り出し、httpサーバに送信します。音声をアップロードする - httpストリーミング
httpストリームはどのように書くことができますか?CFHTTPStreamでは書き込みメソッドが表示されませんでした。読み込みのみ: 使用ソケットが必要ですか? ありがとうございます! (NSStreamStatus)streamStatus -
私の実際のコードは、ソリューションがNSInputStreamのサブクラスを作成し、openメソッドを実装し、近く、読み、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);