У меня есть скрипт тестирования Python, который выполняет потоковую передачу API с использованием requests.post()
. Это выглядит так:
response = requests.post(url_events, data="XYZ", stream=True, headers = {"A":"B"})
if (response.ok):
for chunk in response.iter_content(chunk_size=256):
print chunk
Я пытаюсь выяснить, как можно использовать ту же логику, но с использованием C ++. Из того, что я обнаружил, библиотека curl
может помочь, однако я не могу найти, как передать поле data
. Вот код, который у меня есть:
CURL* connection = curl_easy_init();
// set url
curl_easy_setopt(connection, CURLOPT_URL, url_events);
// set header
struct curl_slist* headers = NULL;
headers = curl_slist_append(headers, "A:B");
code = curl_easy_setopt(connection, CURLOPT_HTTPHEADER, headers);
// set streaming callback that will print every received message
curl_easy_setopt(connection, CURLOPT_WRITEFUNCTION, printCallback);
// start connection
code = curl_easy_perform(connection);
// ...
curl_easy_cleanup(connection);
curl_slist_free_all(headers);
Я просматривал файл curl.h
, пытаясь найти способ указать поле данных, но, похоже, ничего не подходит (в зависимости от имени)?
Я на правильном пути? Будет ли использование curl
правильным решением для моей задачи, или мне стоит заняться другими библиотеками C, C ++? Приветствуется пример, который выполняет ту же задачу, что и выше request.post()
, или предложение, как добиться того же, используя curl
.