api curl json
Добавлено: 25 сен 2024, 16:42
JSON для современного C ++
https://json.nlohmann.me/api/basic_json/
curl_easy_setopt - задает параметры для упрощения обработки запроса
https://curl.se/libcurl/c/curl_easy_setopt.html
Публичный Web API
https://api.elma365.com/ru/public-api/reference/
Обертка для работы с API BPM Elma365.
https://github.com/glsv/elma-api
Компиляция:
https://json.nlohmann.me/api/basic_json/
curl_easy_setopt - задает параметры для упрощения обработки запроса
https://curl.se/libcurl/c/curl_easy_setopt.html
Публичный Web API
https://api.elma365.com/ru/public-api/reference/
Обертка для работы с API BPM Elma365.
https://github.com/glsv/elma-api
Код: Выделить всё
sudo apt install libcurl4-openssl-dev nlohmann-json3-dev
Код: Выделить всё
#include <iostream>
#include <string>
#include <curl/curl.h>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
// Функция-обработчик для получения данных через curl
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() {
// Инициализация libcurl
CURL* curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
std::string read_buffer;
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_URL, "https://localhost/pub/v1/user/list"); // Замените на ваш URL
// curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // Use the custom headers
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &read_buffer);
// Выполнение запроса
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
} else {
// Парсинг JSON
try {
// std::cout << read_buffer << std::endl << std::endl;
json j = json::parse(read_buffer);
std::cout << "Parsed JSON:\n" << j.dump(4) << std::endl; // Вывод отформатированного JSON
// std::cout << "Parsed JSON:\n" << j << std::endl; // Вывод отформатированного JSON
// Пример доступа к данным
// std::cout << j["key"] << std::endl; // замените "key" на ваш ключ
} catch (json::parse_error& e) {
std::cerr << "JSON parse error: " << e.what() << std::endl;
}
}
// Очистка ресурсов
curl_easy_cleanup(curl);
}
//delete curl;
return 0;
}
Код: Выделить всё
g++ -std=c++11 -o curl_elma curl_elma.cpp -lcurl