Como POSTAR um buffer de JSON usando libcurl?
tualmente, o meu programa C ++ chama curl através de um pipe popen("curl ...")
) para POSTAR um arquivo de dados JSON para um servidor da web. Isso tem limitações óbvias de desempenho devido à necessidade de salvar o JSON em um arquivo e chamar curl em um subshell. Gostaria de reescrevê-lo para usar libcurl, mas não está claro para mim como fazer isso. A linha de comando que passo parapopen()
é
curl -s -S -D /dev/null -H "Content-Type: application/json" -X POST -d file-of-json http://server/handler.php
Os dados JSON (cerca de 3K) estão em um buffer na RAM antes que eu precise publicá-los. Eu esperava usar o CURLOPT_READFUNCTION da libcurl para colocar o buffer em libcurl (mas estou aberto a alternativas) e CURLOPT_WRITEFUNCTION para capturar a resposta do servidor, semelhante à forma como li a resposta do pipe pope
Tudo o que parece simples. O que é confuso é qual combinação de CURLOPT_POST, CURLOPT_HTTPPOST, CURLOPT_POSTFIELDS, CURLOPT_HTTPHEADER eu preciso. Eu li muitos posts sobre esse assunto (sem trocadilhos) e nenhum corresponde exatamente ao meu cenário. Alguma sugestão
[Normalmente, não tenho campos de formulário codificados por URL, como este: http: //server/handler.php? I = do & not = use & these = in & my = query]