Unicode C++
Unicode C++
effectconnect Read Orderlist
See more effectconnect Examples
Get a set of orders filtered by the parameters in the XML payload.Chilkat Unicode C++ Downloads
#include <CkHttpW.h>
#include <CkDateTimeW.h>
#include <CkXmlW.h>
#include <CkStringBuilderW.h>
#include <CkCrypt2W.h>
#include <CkHttpResponseW.h>
void ChilkatSample(void)
{
bool success = false;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const wchar_t *fullUri = L"https://submit.effectconnect.com/orderlist";
const wchar_t *uri = L"/orderlist";
const wchar_t *apiVersion = L"2.0";
CkHttpW http;
// Use your effectconnect public key here..
http.SetRequestHeader(L"KEY",L"PUBLIC_KEY");
http.SetRequestHeader(L"VERSION",apiVersion);
http.SetRequestHeader(L"URI",uri);
http.SetRequestHeader(L"RESPONSETYPE",L"XML");
http.SetRequestHeader(L"RESPONSELANGUAGE",L"en");
// Get the current date/time in timestamp format.
CkDateTimeW dt;
dt.SetFromCurrentSystemTime();
const wchar_t *timestamp = dt.getAsTimestamp(true);
http.SetRequestHeader(L"TIME",timestamp);
wprintf(L"timestamp = %s\n",timestamp);
// Create the following XML request body:
// <?xml version="1.0" encoding="utf-8"?>
// <list>
// <filters>
// <fromDateFilter>
// <filterValue>2018-09-14T12:12:12+01:00</filterValue>
// </fromDateFilter>
// <toDateFilter>
// <filterValue>2019-04-13T23:59:59+01:00</filterValue>
// </toDateFilter>
// <hasStatusFilter>
// <filterValue>paid</filterValue>
// </hasStatusFilter>
// <hasTagFilter>
// <filterValue>
// <tagName>Test</tagName>
// <exclude>false</exclude>
// </filterValue>
// </hasTagFilter>
// </filters>
// </list>
// Use this online tool to generate the code from sample XML:
// Generate Code to Create XML
CkXmlW xml;
xml.put_Tag(L"list");
xml.UpdateChildContent(L"filters|fromDateFilter|filterValue",L"2018-09-14T12:12:12+01:00");
xml.UpdateChildContent(L"filters|toDateFilter|filterValue",L"2019-04-13T23:59:59+01:00");
xml.UpdateChildContent(L"filters|hasStatusFilter|filterValue",L"paid");
xml.UpdateChildContent(L"filters|hasTagFilter|filterValue|tagName",L"Test");
xml.UpdateChildContent(L"filters|hasTagFilter|filterValue|exclude",L"false");
xml.put_EmitCompact(true);
CkStringBuilderW sbXml;
xml.GetXmlSb(sbXml);
// Build a string-to-sign and sign it using our effectconnect private key
CkStringBuilderW sbStringToSign;
sbStringToSign.AppendInt(sbXml.get_Length());
sbStringToSign.Append(L"POST");
sbStringToSign.Append(uri);
sbStringToSign.Append(apiVersion);
sbStringToSign.Append(timestamp);
CkCrypt2W crypt;
crypt.put_MacAlgorithm(L"hmac");
crypt.put_HashAlgorithm(L"sha512");
crypt.put_EncodingMode(L"base64");
// Use your effectconnect private key here:
crypt.SetMacKeyString(L"PRIVATE_KEY");
http.SetRequestHeader(L"SIGNATURE",crypt.macStringENC(sbStringToSign.getAsString()));
// Send the POST..
CkHttpResponseW resp;
success = http.HttpStr(L"POST",fullUri,xml.getXml(),L"utf-8",L"application/xml",resp);
if (success == false) {
wprintf(L"%s\n",http.lastErrorText());
return;
}
wprintf(L"response status code = %d\n",resp.get_StatusCode());
// Examine the response. The response status code can be 200 for both errors and success.
// The success or error is based on the XML returned in the response body.
CkXmlW xmlResp;
xmlResp.LoadXml(resp.bodyStr());
wprintf(L"response body:\n");
wprintf(L"%s\n",xmlResp.getXml());
// Remove previously set headers (unless we want the same headers for the next request,
// in which case we may remove or update individual headers by calling SetRequestHeader.
http.ClearHeaders();
}