Как анализировать заголовки HTTP с помощью libcurl? - PullRequest
12 голосов
/ 03 января 2011

Я оглядывался по сторонам и был очень удивлен, что, похоже, нет средств, позволяющих вообще анализировать заголовки в libcurl (который в наши дни является канонической библиотекой C для http).

Самым близким, что я нашел, была запись в списке рассылки, где кто-то предлагал кому-то еще поискать в архивах списка рассылки.

Единственное средство, предоставляемое libcurl через setopt , это CURLOPT_HEADERFUNCTION, которое будет подавать ответы заголовка по одной строке за раз.

Это кажется слишком примитивным, учитывая, что заголовки могут занимать несколько строк . В идеале это должно быть сделано один раз правильно (предпочтительно самой библиотекой) и не должно быть оставлено разработчикам приложений для постоянного переизобретения.

Редактировать

Пример того, как наивная вещь не работает, см. Следующую суть с примером кода libcurl и правильно сформированным http-ответом, который он не может проанализировать: https://gist.github.com/762954

Ответы [ 2 ]

11 голосов
/ 13 марта 2012

Прошло больше года, поэтому я думаю, что я закрою это как «вручную».Или:

Если у вас проблемы cURL, мне жаль вашего сына,

У вас есть многострочные заголовки, и вы должны проанализировать каждый из них.

8 голосов
/ 03 января 2011

libcurl считывает весь заголовок и отправляет его как одну завершенную строку для обратного вызова.

«Продолжение» Строки заголовка HTTP не разрешены в семействе HTTP 1.1 RFC 7230, и они фактически вымерли даже раньшечто.

...