2 votes

Gestion des réponses HTTP de libcurl sur plusieurs callbacks

J'utilise libcurl pour envoyer des requêtes HTTP post et traiter ensuite les réponses. Lorsqu'une réponse est reçue, la bibliothèque rappelle mon programme en utilisant la fonction donnée à l'option CURLOPT_WRITEFUNCTION propriété via curl_easy_setopt .

// callback function
std::size_t on_data(const char* buffer, const std::size_t size, const std::size_t nmemb, void* context);

La documentation n'indique pas clairement si vous pouvez laisser les données dans le tampon (en renvoyant 0 à partir du rappel) ou si vous devez copier les données dans un tampon local et continuer à les ajouter à chaque rappel suivant jusqu'à ce que vous ayez reçu le message complet.

Mes questions sont les suivantes :

  1. Quelle est la meilleure façon d'obtenir la longueur totale du message ? Content-Length en-tête via CURLOPT_WRITEHEADER ?
  2. Existe-t-il un moyen d'éviter de copier des réponses partielles et d'attendre la réception du message final pour le traiter dans son intégralité ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X