Mi programa C++ invoca actualmente curl a través de un conducto (popen("curl ...")
) para POSTAR un archivo de datos JSON a un servidor web. Esto tiene limitaciones obvias de rendimiento debido a la necesidad de guardar el JSON en un archivo e invocar el curl en una subcadena. Me gustaría volver a escribirlo para usar libcurl, pero no tengo claro cómo hacerlo. La línea de comandos que pase a popen()
es:¿Cómo PUESO un buffer de JSON usando libcurl?
curl -s -S -D /dev/null -H "Content-Type: application/json" -X POST -d file-of-json http://server/handler.php
Los datos JSON (unos 3K) está sentado en un buffer en la memoria RAM antes de lo necesario publicarlo. Esperaba usar CURLOPT_READFUNCTION de libcurl para colocar el búfer en libcurl (pero estoy abierto a alternativas), y CURLOPT_WRITEFUNCTION para capturar la respuesta del servidor, de forma similar a cómo leí la respuesta de la tubería de popen.
Todo parece sencillo. Lo que es confuso es qué combinación de CURLOPT_POST, CURLOPT_HTTPPOST, CURLOPT_POSTFIELDS, CURLOPT_HTTPHEADER que necesito. He leído muchas publicaciones sobre este tema (sin juego de palabras), y ninguna coincide exactamente con mi escenario. ¿Alguna sugerencia?
[Tenga en cuenta que normalmente no tengo ninguna campos de formulario con codificación URL, como esto: http: //server/handler.php I = No & no utilizo = = & estos & en mi consulta =?]
Esto es perfecto. Gracias. –
Sin preocupaciones. Por cierto, si estás escribiendo C++ deberías echarle un vistazo a curlpp, que es un envoltorio para C libcurl directo, y es una manera mucho más agradable de hacer las cosas: http://curlpp.org/index.php/examples/71- example-21 –