Как отправить буфер JSON с помощью libcurl?

Моя программа на C++ в настоящее время вызывает curl через трубу (popen("curl ...")) для POST файла с данными JSON на веб-сервер. Это имеет очевидные ограничения производительности из-за необходимости сохранять JSON в файл и вызывать curl в подпрограмме. Я хотел бы переписать его для использования libcurl, но мне не ясно, как это сделать. Командная строка, которую я передаю в popen() такова:

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

Данные JSON (около 3K) находятся в буфере в оперативной памяти до того, как мне нужно будет их опубликовать. Я ожидал использовать CURLOPT_READFUNCTION для спула буфера в libcurl (но я открыт для альтернатив), и CURLOPT_WRITEFUNCTION для захвата ответа сервера, аналогично тому, как я читаю ответ из трубы popen.

Все это кажется простым. Смущает только то, какая комбинация CURLOPT_POST, CURLOPT_HTTPPOST, CURLOPT_POSTFIELDS, CURLOPT_HTTPHEADER мне нужна. Я прочитал много сообщений на эту тему (без каламбура), и ни одно из них не соответствует моему сценарию. Есть предложения?

[Обратите внимание, что обычно у меня нет полей формы с URL-кодом, например: http://server/handler.php?I=do¬=use&these=in&my=query]

14
задан Richard 6 August 2019 в 21:42
поделиться