Comment POSTER un tampon de JSON en utilisant libcurl?

Mon programme C++ actuellement invoque curl à travers un tuyau (popen("curl ...")) pour publier un fichier de données JSON à un serveur web. Cela a bien évidemment des limites de performances en raison de la nécessité de sauver le JSON dans un fichier et invoquer la tuile dans un shell interne est exécuté. J'aimerais réécrire à utiliser libcurl, mais il n'est pas clair pour moi comment faire cela. La ligne de commande que je passe à popen() est:

curl -s -S -D /dev/null -H "Content-Type: application/json" -X POST -d file-of-json http://server/handler.php

Les données JSON (environ 3K) est assis dans un buffer en RAM avant j'ai besoin de l'afficher. Je m'attendais à utiliser libcurl est CURLOPT_READFUNCTION à se vider la mémoire tampon de libcurl (mais je suis ouvert à d'autres options), et CURLOPT_WRITEFUNCTION pour capturer la réponse du serveur, semblable à la façon dont j'ai lu la réponse de popen du tuyau.

Tout ce qui paraît simple. Ce qui est déroutant, c'est la combinaison de CURLOPT_POST, CURLOPT_HTTPPOST, CURLOPT_POSTFIELDS, CURLOPT_HTTPHEADER j'ai besoin. J'ai lu beaucoup de posts sur ce sujet (aucun calembour prévu), et aucun ne correspond exactement à mon scénario. Des suggestions?

[Remarque que j'ai l'habitude de ne pas avoir une URL-encodé les champs de formulaire, comme ceci: http://server/handler.php?I=do&pas=&ces=en&ma=query]

source d'informationauteur Randall Cook