Mój program w C++ aktualnie wywołuje zwijanie się przez potok (popen("curl ...")
) do POST pliku danych JSON do serwera WWW. Ma to oczywiste ograniczenia wydajności ze względu na konieczność zapisania pliku JSON w pliku i wywołania zwinięcia w podpowłoce. Chciałbym przerobić go na libcurl, ale nie jest dla mnie jasne, jak to zrobić. Linia komend mijam do popen()
jest:Jak POST buforować JSON przy użyciu libcurl?
curl -s -S -D /dev/null -H "Content-Type: application/json" -X POST -d file-of-json http://server/handler.php
dane JSON (około 3K) siedzi w buforze pamięci RAM przed muszę go zakładać. Spodziewałem się użyć CURLOPT_READFUNCTION libcurla do buforowania bufora do libcurl (ale jestem otwarty na alternatywy), a CURLOPT_WRITEFUNCTION do przechwytywania odpowiedzi serwera, podobnie jak czytałem odpowiedź z rury popena.
Wszystko to wydaje się proste. To, co jest mylące, to która kombinacja CURLOPT_POST, CURLOPT_HTTPPOST, CURLOPT_POSTFIELDS, CURLOPT_HTTPHEADER jest mi potrzebna. Przeczytałem wiele postów na ten temat (gra słów nie przeznaczonych) i żadne dokładnie nie pasuje do mojego scenariusza. Jakieś sugestie?
[Zauważ, że zazwyczaj nie mają żadnych pól formularza URL kodowane w następujący sposób: http: //server/handler.php I = nie = nie & używać & te = w = & moja kwerenda?]
To jest doskonały. Dzięki. –
Bez obaw. BTW, jeśli piszesz C++ powinieneś sprawdzić curlpp, który jest wrapperem dla prostej C libcurl i jest o wiele ładniejszym sposobem na robienie rzeczy: http://curlpp.org/index.php/examples/71- example-21 –