Потоковая передача данных в ответ CFHTTPMessageRef возможна? - PullRequest
1 голос
/ 07 декабря 2011

Я знаю, что можно передавать данные в CFHTTPMessageRef, который является объектом запроса, это можно сделать с помощью метода CFReadStreamCreateForHTTPRequest.

Можно ли сделать то же самое с CFHTTPMessageRef это объект ответа?

Я хочу, чтобы я запустил поток / операцию (или аналогичную) с двумя параметрами.Параметр один - это запрос с потоком чтения для чтения фактического запроса.Параметр два должен быть ответом, предпочтительно с потоком записи для записи вашего ответа.

Очевидно, что я могу сделать это, используя readstream и writeestream напрямую, однако тогда мне придется вручную отформатировать запрос и ответ.

Возможно ли это с использованием классов CFNetwork?

1 Ответ

1 голос
/ 16 декабря 2011

Я не очень хорошо понял ваш вопрос.но я использовал 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;
    }
}
...