User Tools

Site Tools


An example of data access from C/C++

An example of C code for executing a query to the WebHMI API.

#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;
}

Page Tools