#include <curl/curl.h>
#include <iostream>
#include <string>
// Callback function to capture the response.
static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
const char* postData = "{\"text\": \"Hello, world!\"}";
// Set URL for the POST request.
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:5000/echo");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData);
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << "\n";
} else {
std::cout << "Response: " << readBuffer << "\n";
}
curl_easy_cleanup(curl);
curl_slist_free_all(headers);
}
return 0;
}
I2luY2x1ZGUgPGN1cmwvY3VybC5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CgovLyBDYWxsYmFjayBmdW5jdGlvbiB0byBjYXB0dXJlIHRoZSByZXNwb25zZS4Kc3RhdGljIHNpemVfdCBXcml0ZUNhbGxiYWNrKHZvaWQqIGNvbnRlbnRzLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiB1c2VycCkKewogICAgKChzdGQ6OnN0cmluZyopdXNlcnApLT5hcHBlbmQoKGNoYXIqKWNvbnRlbnRzLCBzaXplICogbm1lbWIpOwogICAgcmV0dXJuIHNpemUgKiBubWVtYjsKfQoKaW50IG1haW4oKSB7CiAgICBDVVJMICpjdXJsOwogICAgQ1VSTGNvZGUgcmVzOwogICAgc3RkOjpzdHJpbmcgcmVhZEJ1ZmZlcjsKCiAgICBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKICAgIGlmKGN1cmwpIHsKICAgICAgICBjb25zdCBjaGFyKiBwb3N0RGF0YSA9ICJ7XCJ0ZXh0XCI6IFwiSGVsbG8sIHdvcmxkIVwifSI7CgogICAgICAgIC8vIFNldCBVUkwgZm9yIHRoZSBQT1NUIHJlcXVlc3QuCiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9lY2hvIik7CiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsIHBvc3REYXRhKTsKCiAgICAgICAgc3RydWN0IGN1cmxfc2xpc3QgKmhlYWRlcnMgPSBOVUxMOwogICAgICAgIGhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJzLCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uIik7CiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMpOwoKICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwgV3JpdGVDYWxsYmFjayk7CiAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgJnJlYWRCdWZmZXIpOwoKICAgICAgICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKICAgICAgICBpZihyZXMgIT0gQ1VSTEVfT0spIHsKICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogIiA8PCBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSA8PCAiXG4iOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiUmVzcG9uc2U6ICIgPDwgcmVhZEJ1ZmZlciA8PCAiXG4iOwogICAgICAgIH0KICAgICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGhlYWRlcnMpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K
#include <curl/curl.h>
#include <iostream>
#include <string>
// Callback function to capture the response.
static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
const char* postData = "{\"text\": \"Hello, world!\"}";
// Set URL for the POST request.
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:5000/echo");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postData);
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << "\n";
} else {
std::cout << "Response: " << readBuffer << "\n";
}
curl_easy_cleanup(curl);
curl_slist_free_all(headers);
}
return 0;
}