Comment parsingr les en-têtes HTTP avec libcurl?

J’ai regardé autour de moi et je suis assez surpris qu’il semble n’y avoir aucun moyen par lequel on peut parsingr génétiquement des en-têtes dans libcurl (qui semble être la bibliothèque canonique C pour http de nos jours).

La chose la plus proche que j’ai trouvée est un message de liste de diffusion où quelqu’un a suggéré à quelqu’un de faire une recherche dans les archives de la liste de diffusion.

La seule fonctionnalité fournie par libcurl via setopt est CURLOPT_HEADERFUNCTION qui alimentera les réponses d’en-tête une ligne à la fois.

Cela semble totalement trop primitif étant donné que les en- têtes peuvent s’étendre sur plusieurs lignes . Idéalement, cela devrait être fait une fois correctement (de préférence par la bibliothèque elle-même) et ne pas laisser les développeurs d’applications le réinventer continuellement.

Modifier :

Un exemple de la chose naïve qui ne fonctionne pas, voyez l’essentiel suivant avec un exemple de code libcurl et une réponse http correctement formée qu’il ne peut pas parsingr: https://gist.github.com/762954

Été plus d’un an, donc je pense que je vais fermer cela comme “manuellement”. Ou:

Si vous avez des problèmes de cURL, je me sens mal pour votre fils,

Vous avez des en-têtes multilignes et devez parsingr chacun d’eux.

libcurl lit l’intégralité de l’en-tête et l’envoie au callback sous la forme d’une seule ligne complète.

Les lignes d’en-tête HTTP “Suite” ne sont pas autorisées dans la famille HTTP 1.1 RFC 7230 et elles étaient pratiquement éteintes même avant cela.