Objective-C
Objective-C
effectconnect Read Orderlist
See more effectconnect Examples
Get a set of orders filtered by the parameters in the XML payload.Chilkat Objective-C Downloads
#import <NSString.h>
#import <CkoHttp.h>
#import <CkoDateTime.h>
#import <CkoXml.h>
#import <CkoStringBuilder.h>
#import <CkoCrypt2.h>
#import <CkoHttpResponse.h>
BOOL success = NO;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
NSString *fullUri = @"https://submit.effectconnect.com/orderlist";
NSString *uri = @"/orderlist";
NSString *apiVersion = @"2.0";
CkoHttp *http = [[CkoHttp alloc] init];
// Use your effectconnect public key here..
[http SetRequestHeader: @"KEY" value: @"PUBLIC_KEY"];
[http SetRequestHeader: @"VERSION" value: apiVersion];
[http SetRequestHeader: @"URI" value: uri];
[http SetRequestHeader: @"RESPONSETYPE" value: @"XML"];
[http SetRequestHeader: @"RESPONSELANGUAGE" value: @"en"];
// Get the current date/time in timestamp format.
CkoDateTime *dt = [[CkoDateTime alloc] init];
[dt SetFromCurrentSystemTime];
NSString *timestamp = [dt GetAsTimestamp: YES];
[http SetRequestHeader: @"TIME" value: timestamp];
NSLog(@"%@%@",@"timestamp = ",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
CkoXml *xml = [[CkoXml alloc] init];
xml.Tag = @"list";
[xml UpdateChildContent: @"filters|fromDateFilter|filterValue" value: @"2018-09-14T12:12:12+01:00"];
[xml UpdateChildContent: @"filters|toDateFilter|filterValue" value: @"2019-04-13T23:59:59+01:00"];
[xml UpdateChildContent: @"filters|hasStatusFilter|filterValue" value: @"paid"];
[xml UpdateChildContent: @"filters|hasTagFilter|filterValue|tagName" value: @"Test"];
[xml UpdateChildContent: @"filters|hasTagFilter|filterValue|exclude" value: @"false"];
xml.EmitCompact = YES;
CkoStringBuilder *sbXml = [[CkoStringBuilder alloc] init];
[xml GetXmlSb: sbXml];
// Build a string-to-sign and sign it using our effectconnect private key
CkoStringBuilder *sbStringToSign = [[CkoStringBuilder alloc] init];
[sbStringToSign AppendInt: sbXml.Length];
[sbStringToSign Append: @"POST"];
[sbStringToSign Append: uri];
[sbStringToSign Append: apiVersion];
[sbStringToSign Append: timestamp];
CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init];
crypt.MacAlgorithm = @"hmac";
crypt.HashAlgorithm = @"sha512";
crypt.EncodingMode = @"base64";
// Use your effectconnect private key here:
[crypt SetMacKeyString: @"PRIVATE_KEY"];
[http SetRequestHeader: @"SIGNATURE" value: [crypt MacStringENC: [sbStringToSign GetAsString]]];
// Send the POST..
CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpStr: @"POST" url: fullUri bodyStr: [xml GetXml] charset: @"utf-8" contentType: @"application/xml" response: resp];
if (success == NO) {
NSLog(@"%@",http.LastErrorText);
return;
}
NSLog(@"%@%d",@"response status code = ",[resp.StatusCode intValue]);
// 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.
CkoXml *xmlResp = [[CkoXml alloc] init];
[xmlResp LoadXml: resp.BodyStr];
NSLog(@"%@",@"response body:");
NSLog(@"%@",[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];