1

CFHTTPMessageRefリクエスト オブジェクトである にデータをストリーミングできることはわかっています。これは、メソッドを使用して実現できますCFReadStreamCreateForHTTPRequest

CFHTTPMessageRef応答オブジェクトであるa で同じことを行うことは可能ですか?

私がやりたいことは、2 つのパラメーターを使用してスレッド/操作 (または同様のもの) を開始することです。パラメータ 1 は、実際のリクエストを読み取るための readstream を含むリクエストです。パラメータ 2 は、できれば返信を書き込むための書き込みストリームを含む応答である必要があります。

明らかに、readstream と writestream を直接使用してこれを行うことができますが、その場合はリクエストとレスポンスを手動でフォーマットする必要があります。

これは CFNetwork クラスを使用して可能ですか?

4

1 に答える 1

1

あなたの質問がよくわかりませんでした。しかし、ストリーミングには CFNetwork を使用しました。ここで応答を受信する方法は次のとおりです。

-(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{    
    /*
         The NSStreamEvent constant can be one of the following:
         NSStreamEventNone              -- No event has occurred.
         NSStreamEventOpenCompleted     -- The open has completed successfully.
         NSStreamEventHasBytesAvailable -- The stream has bytes to be read.
         NSStreamEventHasSpaceAvailable -- The stream can accept bytes for writing.
         NSStreamEventErrorOccurred     -- An error has occurred on the stream.
         NSStreamEventEndEncountered    -- The end of the stream has been reached. 
     */

    switch (eventCode) 
    {
        case NSStreamEventHasBytesAvailable:
            len = [(NSInputStream *)aStream read:buf maxLength:1024];
            if(len) {    
                //_data type is nsmutabledata
                [_data appendBytes:(const void *)buf length:len];
                int bytesRead;
                bytesRead += len;
            } else {
                NSLog(@"No data.");
            }
            break;
        case NSStreamEventErrorOccurred:

            break;
        case NSStreamEventOpenCompleted:

            break;
        case NSStreamEventEndEncountered:

            break;
        case NSStreamEventNone:

            break;
        case NSStreamEventHasSpaceAvailable:

            break;
        default:
            break;
    }
}
于 2011-12-16T04:36:28.247 に答える