Sample code for 30+ languages & platforms
Unicode C

Finnhub API - Get Stock Quote

See more AI Examples

Demonstrates how to get a stock quote from the Finnhub API.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkHttpW.h>
#include <C_CkHttpRequestW.h>
#include <C_CkHttpResponseW.h>
#include <C_CkJsonObjectW.h>

void ChilkatSample(void)
    {
    BOOL success;
    const wchar_t *apiKey;
    const wchar_t *symbol;
    HCkHttpW http;
    const wchar_t *urlWithoutParams;
    HCkHttpRequestW req;
    HCkHttpResponseW resp;
    HCkJsonObjectW json;
    int statusCode;

    success = FALSE;

    //  Replace with your actual Finnhub API key.
    apiKey = L"YOUR_FINNHUB_API_KEY";
    symbol = L"AAPL";

    http = CkHttpW_Create();

    //  This is the URL without params.
    urlWithoutParams = L"https://finnhub.io/api/v1/quote";

    req = CkHttpRequestW_Create();

    //  Add params that will be sent in the URL.
    CkHttpRequestW_AddParam(req,L"symbol",symbol);
    CkHttpRequestW_AddParam(req,L"token",apiKey);

    CkHttpRequestW_putHttpVerb(req,L"GET");

    //  Send the request to get the JSON response.
    resp = CkHttpResponseW_Create();
    success = CkHttpW_HttpReq(http,urlWithoutParams,req,resp);
    if (success == FALSE) {
        wprintf(L"%s\n",CkHttpW_lastErrorText(http));
        CkHttpW_Dispose(http);
        CkHttpRequestW_Dispose(req);
        CkHttpResponseW_Dispose(resp);
        return;
    }

    json = CkJsonObjectW_Create();
    CkHttpResponseW_GetBodyJson(resp,json);

    statusCode = CkHttpResponseW_getStatusCode(resp);
    wprintf(L"response status code: %d\n",statusCode);

    CkJsonObjectW_putEmitCompact(json,FALSE);
    wprintf(L"%s\n",CkJsonObjectW_emit(json));

    //  Sample result:

    //  {
    //    "c": 248.8,
    //    "d": -4.09,
    //    "dp": -1.6173,
    //    "h": 255.493,
    //    "l": 248.07,
    //    "o": 253.9,
    //    "pc": 252.89,
    //    "t": 1774641600
    //  }

    if (statusCode == 200) {
        //  Add the symbol to the top of the result.
        CkJsonObjectW_AddStringAt(json,0,L"symbol",symbol);

        //  Rename members for clarification.
        CkJsonObjectW_Rename(json,L"c",L"currentPrice");
        CkJsonObjectW_Rename(json,L"d",L"change");
        CkJsonObjectW_Rename(json,L"dp",L"percentChange");
        CkJsonObjectW_Rename(json,L"h",L"high");
        CkJsonObjectW_Rename(json,L"l",L"low");
        CkJsonObjectW_Rename(json,L"o",L"open");
        CkJsonObjectW_Rename(json,L"pc",L"prevClose");
        CkJsonObjectW_Rename(json,L"t",L"unixTime");

        wprintf(L"%s\n",CkJsonObjectW_emit(json));

    }
    else {
        wprintf(L"Failed\n");
    }



    CkHttpW_Dispose(http);
    CkHttpRequestW_Dispose(req);
    CkHttpResponseW_Dispose(resp);
    CkJsonObjectW_Dispose(json);

    }