Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
var
success: Boolean;
url: PWideChar;
json: HCkJsonObject;
http: HCkHttp;
dt: HCkDateTime;
timecreated: PWideChar;
prng: HCkPrng;
nonce: PWideChar;
secret: PWideChar;
sb: HCkStringBuilder;
crypt: HCkCrypt2;
digest: PWideChar;
sbNonce: HCkStringBuilder;
resp: HCkHttpResponse;

begin
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
url := 'https://api.omniture.com/admin/1.4/rest/?method=Report.Queue';

json := CkJsonObject_Create();
CkJsonObject_UpdateString(json,'reportDescription.reportSuiteID','rsid');
CkJsonObject_UpdateString(json,'reportDescription.dateGranularity','hour');

http := CkHttp_Create();

dt := CkDateTime_Create();
CkDateTime_SetFromCurrentSystemTime(dt);
timecreated := CkDateTime__getAsTimestamp(dt,False);

prng := CkPrng_Create();
nonce := CkPrng__genRandom(prng,12,'hex');

secret := 'SECRET';

sb := CkStringBuilder_Create();
CkStringBuilder_Append(sb,nonce);
CkStringBuilder_Append(sb,timecreated);
CkStringBuilder_Append(sb,secret);

crypt := CkCrypt2_Create();
CkCrypt2_putHashAlgorithm(crypt,'sha1');
CkCrypt2_putEncodingMode(crypt,'base64');
digest := CkCrypt2__hashStringENC(crypt,CkStringBuilder__getAsString(sb));

sbNonce := CkStringBuilder_Create();
CkStringBuilder_Append(sbNonce,nonce);
CkStringBuilder_Encode(sbNonce,'base64','utf-8');

CkStringBuilder_Clear(sb);
CkStringBuilder_Append(sb,'UsernameToken Username="USERNAME", PasswordDigest="');
CkStringBuilder_Append(sb,digest);
CkStringBuilder_Append(sb,'", Nonce="');
CkStringBuilder_Append(sb,CkStringBuilder__getAsString(sbNonce));
CkStringBuilder_Append(sb,'", Created="');
CkStringBuilder_Append(sb,timecreated);
CkStringBuilder_Append(sb,'"');

Memo1.Lines.Add(CkStringBuilder__getAsString(sb));

CkHttp_SetRequestHeader(http,'X-WSSE',CkStringBuilder__getAsString(sb));

resp := CkHttpResponse_Create();
success := CkHttp_HttpJson(http,'POST',url,json,'text/json',resp);
if (success = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

Memo1.Lines.Add('Http Status code: ' + IntToStr(CkHttpResponse_getStatusCode(resp)));
Memo1.Lines.Add('JSON response:');
Memo1.Lines.Add(CkHttpResponse__bodyStr(resp));

CkJsonObject_Dispose(json);
CkHttp_Dispose(http);
CkDateTime_Dispose(dt);
CkPrng_Dispose(prng);
CkStringBuilder_Dispose(sb);
CkCrypt2_Dispose(crypt);
CkStringBuilder_Dispose(sbNonce);
CkHttpResponse_Dispose(resp);