Sample code for 30+ languages & platforms
Objective-C

MyInvois Malaysia Get Document Types

See more Malaysia MyInvois Examples

There are multiple types of documents supported by MyInvois, and this API retrieves their definitions through API call.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoStringBuilder.h>
#import <CkoJsonObject.h>
#import <NSString.h>

BOOL success = NO;

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

CkoHttp *http = [[CkoHttp alloc] init];

// Adds the "Authorization: Bearer <access_token>" header.
http.AuthToken = @"<access_token>";

// Note: The access token is valid for a short amount of time.  Perhaps 1 hour.
// The access token is used in the "Authorization: Bearer <access_token>" header in subsequent requests until it expires.
// Your application would then need to get a new access token, and so on..
// To get an access token, see How to Get a MyInvois Access Token

CkoStringBuilder *sb = [[CkoStringBuilder alloc] init];
success = [http QuickGetSb: @"https://preprod-api.myinvois.hasil.gov.my/api/v1.0/documenttypes" sbContent: sb];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

int statusCode = [http.LastStatus intValue];
NSLog(@"%@%d",@"response status code = ",statusCode);

if (statusCode != 200) {
    // Failed.
    NSLog(@"%@",[sb GetAsString]);
    return;
}

// Sample response:

// {"result":
//       [
//          {"id":45,
//             "invoiceTypeCode":4,
//             "description":"Invoice",
//             "activeFrom":"2015-02-13T13:15:00Z",
//             "activeTo":"2027-03-01T00:00:00Z",
//             "documentTypeVersions":
//             [
//                {"id":454,
//                 "name":"1.0",
//                 "description":"Invoice version 1.1",
//                 "activeFrom":"2015-02-13T13:15:00Z",
//                 "activeTo":"2027-03-01T00:00:00Z",
//                 "versionNumber":1.1,
//                 "status":"published"
//                }
//             ]
//           }
//       ]
// }

// Use this online tool to generate parsing code from sample JSON: 
// Generate Parsing Code from JSON

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json LoadSb: sb];

int id;
int invoiceTypeCode;
NSString *description = 0;
NSString *activeFrom = 0;
NSString *activeTo = 0;
int j;
int count_j;
NSString *name = 0;
NSString *versionNumber = 0;
NSString *status = 0;

int i = 0;
int count_i = [[json SizeOfArray: @"result"] intValue];
while (i < count_i) {
    json.I = [NSNumber numberWithInt: i];
    id = [[json IntOf: @"result[i].id"] intValue];
    invoiceTypeCode = [[json IntOf: @"result[i].invoiceTypeCode"] intValue];
    description = [json StringOf: @"result[i].description"];
    activeFrom = [json StringOf: @"result[i].activeFrom"];
    activeTo = [json StringOf: @"result[i].activeTo"];
    j = 0;
    count_j = [[json SizeOfArray: @"result[i].documentTypeVersions"] intValue];
    while (j < count_j) {
        json.J = [NSNumber numberWithInt: j];
        id = [[json IntOf: @"result[i].documentTypeVersions[j].id"] intValue];
        name = [json StringOf: @"result[i].documentTypeVersions[j].name"];
        description = [json StringOf: @"result[i].documentTypeVersions[j].description"];
        activeFrom = [json StringOf: @"result[i].documentTypeVersions[j].activeFrom"];
        activeTo = [json StringOf: @"result[i].documentTypeVersions[j].activeTo"];
        versionNumber = [json StringOf: @"result[i].documentTypeVersions[j].versionNumber"];
        status = [json StringOf: @"result[i].documentTypeVersions[j].status"];
        j = j + 1;
    }

    i = i + 1;
}