Пример доступа к данным из C/C++

Материал из WebHMI Wiki
Перейти к: навигация, поиск
На этой странице были произведены изменения, не отмеченные для перевода.

Другие языки:
English • ‎русский

Пример кода на языке C для выполнения запроса к API WebHMI.

#include <cstdlib>
#include <iostream>
#include <curl/curl.h>
#include <curl/easy.h>
#include <fstream>

using namespace std;
size_t write_func(void *ptr, size_t size, size_t nmemb, void *userdata)
{
        cout.write( (char * ) ptr, size*nmemb); // just output response to screen
        return size * nmemb;
}

int main(int argc, char** argv) {
    
    CURL *curl;
    CURLcode res;

    char errorBuffer[CURL_ERROR_SIZE];

    // Create the GET request
    struct curl_slist *headers = NULL;
    headers = curl_slist_append(headers, "X-WH-APIKEY: F3C74230818DA487BB2017CE5D0290F4DABCAFD7"); // API Key. If API Key is wrong API will return 401 status code.
    headers = curl_slist_append(headers, "X-WH-START: 1391165350"); // Start time for report. Unixtime
    headers = curl_slist_append(headers, "X-WH-END: 1391186951"); // End time for report. Unixtime
    headers = curl_slist_append(headers, "Accept: application/json");  // Currenlty we support JSON ONLY, required header
    headers = curl_slist_append(headers, "Content-Type: application/json"); // Currenlty we support JSON ONLY, required header


    // Init CURL
    curl = curl_easy_init();

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.0.1/api/event-data/1");  // 1 = ID of report
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_func);

        // Attempt to Connect the Server
        res = curl_easy_perform(curl);

        if (res == CURLE_OK) {
            long http_code = 0;
            curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &http_code);
            if (http_code == 200 && res != CURLE_ABORTED_BY_CALLBACK) {
                cout << endl << "Success!"<< endl;
            } else {
                cout << endl << "Error! Code: " << http_code << endl;
            }
        } else {
            cout << "Connection Failed! Error: " << errorBuffer << endl;
        }

        // Close the connection
        curl_easy_cleanup(curl);
    }
    
    return 0;
}