Sample code for 30+ languages & platforms
C++

Adobe Analytics Reporting API (1.4)

See more HTTP Misc Examples

Demonstrates a simple POST of JSON to the Adobe Analytics Reporting API (v1.4)

Chilkat C++ Downloads

C++
#include <CkJsonObject.h>
#include <CkHttp.h>
#include <CkDateTime.h>
#include <CkPrng.h>
#include <CkStringBuilder.h>
#include <CkCrypt2.h>
#include <CkHttpResponse.h>

void ChilkatSample(void)
    {
    bool success = false;

    // This requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // In this example, replace "rsid" with your report suite id, and update the URL to use the correct endpoint
    const char *url = "https://api.omniture.com/admin/1.4/rest/?method=Report.Queue";

    CkJsonObject json;
    json.UpdateString("reportDescription.reportSuiteID","rsid");
    json.UpdateString("reportDescription.dateGranularity","hour");

    CkHttp http;

    CkDateTime dt;
    dt.SetFromCurrentSystemTime();
    const char *timecreated = dt.getAsTimestamp(false);

    CkPrng prng;
    const char *nonce = prng.genRandom(12,"hex");

    const char *secret = "SECRET";

    CkStringBuilder sb;
    sb.Append(nonce);
    sb.Append(timecreated);
    sb.Append(secret);

    CkCrypt2 crypt;
    crypt.put_HashAlgorithm("sha1");
    crypt.put_EncodingMode("base64");
    const char *digest = crypt.hashStringENC(sb.getAsString());

    CkStringBuilder sbNonce;
    sbNonce.Append(nonce);
    sbNonce.Encode("base64");

    sb.Clear();
    sb.Append("UsernameToken Username=\"USERNAME\", PasswordDigest=\"");
    sb.Append(digest);
    sb.Append("\", Nonce=\"");
    sb.Append(sbNonce.getAsString());
    sb.Append("\", Created=\"");
    sb.Append(timecreated);
    sb.Append("\"");

    std::cout << sb.getAsString() << "\r\n";

    http.SetRequestHeader("X-WSSE",sb.getAsString());

    CkHttpResponse resp;
    success = http.HttpJson("POST",url,json,"text/json",resp);
    if (success == false) {
        std::cout << http.lastErrorText() << "\r\n";
        return;
    }

    std::cout << "Http Status code: " << resp.get_StatusCode() << "\r\n";
    std::cout << "JSON response:" << "\r\n";
    std::cout << resp.bodyStr() << "\r\n";
    }