У меня есть NSData
объект, который состоит из нескольких HTTP-ответов или запросов, соединенных вместе. Каков наиболее эффективный способ разбить этот поток запросов / ответов на отдельные CFHTTPMessageRef
объекты?
Мой текущий подход заключается в чтении данных по одной строке за раз, пока CFHTTPMessageIsHeaderComplete
не вернет YES
, после чего я затем получаю значение заголовка Content-Length
, чтобы определить длину тела, связанного с этим конкретным запрос.
Этот подход работает достаточно хорошо, но терпит неудачу в случае chunked Transfer Encoding . Теперь я мог бы добавить дополнительную логику для обработки кусочных передач, но моя логика синтаксического анализа будет расти больше, чем мне бы хотелось. Точно так же, я в настоящее время имею дело только с правильно сформированными сообщениями - оно сработает, если сообщение будет отформатировано неправильно.
Существует (в идеале) набор классов Objective-C, которые могут анализировать поток данных в отдельные сообщения HTTP? Это то, что libcurl
может выполнить?