Токенизация потока HTTP-сообщений в Objective-C - PullRequest
0 голосов
/ 24 января 2011

У меня есть NSData объект, который состоит из нескольких HTTP-ответов или запросов, соединенных вместе. Каков наиболее эффективный способ разбить этот поток запросов / ответов на отдельные CFHTTPMessageRef объекты?

Мой текущий подход заключается в чтении данных по одной строке за раз, пока CFHTTPMessageIsHeaderComplete не вернет YES, после чего я затем получаю значение заголовка Content-Length, чтобы определить длину тела, связанного с этим конкретным запрос.

Этот подход работает достаточно хорошо, но терпит неудачу в случае chunked Transfer Encoding . Теперь я мог бы добавить дополнительную логику для обработки кусочных передач, но моя логика синтаксического анализа будет расти больше, чем мне бы хотелось. Точно так же, я в настоящее время имею дело только с правильно сформированными сообщениями - оно сработает, если сообщение будет отформатировано неправильно.

Существует (в идеале) набор классов Objective-C, которые могут анализировать поток данных в отдельные сообщения HTTP? Это то, что libcurl может выполнить?

1 Ответ

0 голосов
/ 01 февраля 2011

Нет, libcurl не может разделить это для вас.Он разделяет только реальные HTTP-ответы, которые он получает по сети.

...