Sample code for 30+ languages & platforms
Objective-C

Outlook List Contacts

See more Outlook Contact Examples

List Outlook Contacts

Chilkat Objective-C Downloads

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

BOOL success = NO;

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

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

// Use your previously obtained access token here: Get Outlook Contacts OAuth2 Access Token (Azure AD v2.0 Endpoint).

CkoJsonObject *jsonToken = [[CkoJsonObject alloc] init];
success = [jsonToken LoadFile: @"qa_data/tokens/outlookContacts.json"];
if (success == NO) {
    NSLog(@"%@",jsonToken.LastErrorText);
    return;
}

http.AuthToken = [jsonToken StringOf: @"access_token"];

// Send the following GET:

// GET https://graph.microsoft.com/v1.0/me/contacts
CkoStringBuilder *sbJson = [[CkoStringBuilder alloc] init];
success = [http QuickGetSb: @"https://graph.microsoft.com/v1.0/me/contacts" sbContent: sbJson];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

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

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

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbJson];
jResp.EmitCompact = NO;
NSLog(@"%@",[jResp Emit]);

// Sample output:

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

// {
//   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('4ee732c3-322e-4a6b-b729-2fd1eb5c6004')/contacts",
//   "value": [
//     {
//       "@odata.etag": "W/\"EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT\"",
//       "id": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQBGAAAAAAAu7cUXL5YOTrdsUIw7-v8FBwBUcG0qWqkmQYqWLHQataQxAAAAAAEOAABUcG0qWqkmQYqWLHQataQxAAD0sxexAAA=",
//       "createdDateTime": "2021-06-29T16:32:05Z",
//       "lastModifiedDateTime": "2021-06-29T16:32:06Z",
//       "changeKey": "EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT",
//       "categories": [
//       ],
//       "parentFolderId": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQAuAAAAAAAu7cUXL5YOTrdsUIw7-v8FAQBUcG0qWqkmQYqWLHQataQxAAAAAAEOAAA=",
//       "birthday": null,
//       "fileAs": "",
//       "displayName": "Pavel Bansky",
//       "givenName": "Pavel",
//       "initials": null,
//       "middleName": null,
//       "nickName": null,
//       "surname": "Bansky",
//       "title": null,
//       "yomiGivenName": null,
//       "yomiSurname": null,
//       "yomiCompanyName": null,
//       "generation": null,
//       "imAddresses": [
//       ],
//       "jobTitle": null,
//       "companyName": null,
//       "department": null,
//       "officeLocation": null,
//       "profession": null,
//       "businessHomePage": null,
//       "assistantName": null,
//       "manager": null,
//       "homePhones": [
//       ],
//       "mobilePhone": null,
//       "businessPhones": [
//         "+1 732 555 0102"
//       ],
//       "spouseName": null,
//       "personalNotes": "",
//       "children": [
//       ],
//       "emailAddresses": [
//         {
//           "name": "Pavel Bansky",
//           "address": "pavelb@fabrikam.onmicrosoft.com"
//         }
//       ],
//       "homeAddress": {},
//       "businessAddress": {},
//       "otherAddress": {}
//     },
// ...
//   ]
// }

NSString *odata_etag = 0;
NSString *id = 0;
NSString *createdDateTime = 0;
NSString *lastModifiedDateTime = 0;
NSString *changeKey = 0;
NSString *parentFolderId = 0;
NSString *birthday = 0;
NSString *fileAs = 0;
NSString *displayName = 0;
NSString *givenName = 0;
NSString *initials = 0;
NSString *middleName = 0;
NSString *nickName = 0;
NSString *surname = 0;
NSString *title = 0;
NSString *yomiGivenName = 0;
NSString *yomiSurname = 0;
NSString *yomiCompanyName = 0;
NSString *generation = 0;
NSString *jobTitle = 0;
NSString *companyName = 0;
NSString *department = 0;
NSString *officeLocation = 0;
NSString *profession = 0;
NSString *businessHomePage = 0;
NSString *assistantName = 0;
NSString *manager = 0;
NSString *mobilePhone = 0;
NSString *spouseName = 0;
NSString *personalNotes = 0;
int j;
int count_j;
NSString *strVal = 0;
NSString *name = 0;
NSString *address = 0;

NSString *odata_context = [jResp StringOf: @"\"@odata.context\""];
int i = 0;
int count_i = [[jResp SizeOfArray: @"value"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    odata_etag = [jResp StringOf: @"value[i].\"@odata.etag\""];
    id = [jResp StringOf: @"value[i].id"];
    createdDateTime = [jResp StringOf: @"value[i].createdDateTime"];
    lastModifiedDateTime = [jResp StringOf: @"value[i].lastModifiedDateTime"];
    changeKey = [jResp StringOf: @"value[i].changeKey"];
    parentFolderId = [jResp StringOf: @"value[i].parentFolderId"];
    birthday = [jResp StringOf: @"value[i].birthday"];
    fileAs = [jResp StringOf: @"value[i].fileAs"];
    displayName = [jResp StringOf: @"value[i].displayName"];
    givenName = [jResp StringOf: @"value[i].givenName"];
    initials = [jResp StringOf: @"value[i].initials"];
    middleName = [jResp StringOf: @"value[i].middleName"];
    nickName = [jResp StringOf: @"value[i].nickName"];
    surname = [jResp StringOf: @"value[i].surname"];
    title = [jResp StringOf: @"value[i].title"];
    yomiGivenName = [jResp StringOf: @"value[i].yomiGivenName"];
    yomiSurname = [jResp StringOf: @"value[i].yomiSurname"];
    yomiCompanyName = [jResp StringOf: @"value[i].yomiCompanyName"];
    generation = [jResp StringOf: @"value[i].generation"];
    jobTitle = [jResp StringOf: @"value[i].jobTitle"];
    companyName = [jResp StringOf: @"value[i].companyName"];
    department = [jResp StringOf: @"value[i].department"];
    officeLocation = [jResp StringOf: @"value[i].officeLocation"];
    profession = [jResp StringOf: @"value[i].profession"];
    businessHomePage = [jResp StringOf: @"value[i].businessHomePage"];
    assistantName = [jResp StringOf: @"value[i].assistantName"];
    manager = [jResp StringOf: @"value[i].manager"];
    mobilePhone = [jResp StringOf: @"value[i].mobilePhone"];
    spouseName = [jResp StringOf: @"value[i].spouseName"];
    personalNotes = [jResp StringOf: @"value[i].personalNotes"];
    j = 0;
    count_j = [[jResp SizeOfArray: @"value[i].categories"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"value[i].imAddresses"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"value[i].homePhones"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"value[i].businessPhones"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"value[i].businessPhones[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"value[i].children"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"value[i].emailAddresses"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        name = [jResp StringOf: @"value[i].emailAddresses[j].name"];
        address = [jResp StringOf: @"value[i].emailAddresses[j].address"];
        j = j + 1;
    }

    i = i + 1;
}