Sample code for 30+ languages & platforms
Objective-C

MedTunnel: Send Message with File Attachment

See more MedTunnel Examples

Demonstrates the MedTunnel SendMessage method to send a message with a file attachment to one or more recipients.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoHttpRequest.h>
#import <CkoHttpResponse.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];

//  Implements the following CURL command:

//  curl https://server.medtunnel.com/MedTunnelMsg/api/Message/SendMessage -X POST -k 
//          -F "ApplicationId=yourApplicationId" -F "LocationId=yourLocationId" 
//          -F "MedTunnelId=yourMedTunnelId" -F "MedTunnelPassword=yourMedTunnelPassword" 
//          -F "To=recipientsMedTunnelId" 
//          -F "Body=Test of SendMessage"
//          -F "file1=@qa_data/jpg/starfish.jpg"

//  Use the following online tool to generate HTTP code from a CURL command
//  Convert a cURL Command to HTTP Source Code

CkoHttpRequest *req = [[CkoHttpRequest alloc] init];
req.HttpVerb = @"POST";
req.Path = @"/MedTunnelMsg/api/Message/SendMessage";
req.ContentType = @"multipart/form-data";

[req AddParam: @"ApplicationId" value: @"yourApplicationId"];
[req AddParam: @"LocationId" value: @"yourLocationId"];
[req AddParam: @"MedTunnelId" value: @"yourMedTunnelId"];
[req AddParam: @"MedTunnelPassword" value: @"yourMedTunnelPassword"];
[req AddParam: @"To" value: @"recipientsMedTunnelId"];
[req AddParam: @"Body" value: @"Test"];

success = [req AddFileForUpload2: @"file1" path: @"qa_data/jpg/starfish.jpg" contentType: @"application/octet-stream"];

[req AddHeader: @"Expect" value: @"100-continue"];

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpSReq: @"server.medtunnel.com" port: [NSNumber numberWithInt: 443] ssl: YES request: req response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
[resp GetBodySb: sbResponseBody];
CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];
jResp.EmitCompact = NO;

NSLog(@"%@",@"Response Body:");
NSLog(@"%@",[jResp Emit]);

int respStatusCode = [resp.StatusCode intValue];
NSLog(@"%@%d",@"Response Status Code = ",respStatusCode);
if (respStatusCode >= 400) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",resp.Header);
    NSLog(@"%@",@"Failed.");
    return;
}

//  Sample JSON response:
//  (Sample code for parsing the JSON response is shown below)

//  {
//    "ReturnCode": 1,
//    "ReturnCodeText": "Success",
//    "Data": "{\"Id\":989432,\"FromUserId\":36990,\"FromMailBoxId\":36965, ... \"SendGlobalNotifications\":false}"
//  }

//  Sample code for parsing the JSON response...
//  Use the following online tool to generate parsing code from sample JSON:
//  Generate Parsing Code from JSON

int ReturnCode = [[jResp IntOf: @"ReturnCode"] intValue];
NSString *ReturnCodeText = [jResp StringOf: @"ReturnCodeText"];
NSString *Data = [jResp StringOf: @"Data"];

//  Load the Data into another JSON object and parse..
CkoJsonObject *jsonData = [[CkoJsonObject alloc] init];
[jsonData Load: Data];
jsonData.EmitCompact = NO;
NSLog(@"%@",[jsonData Emit]);

//  {
//    "Id": 989448,
//    "FromUserId": 36990,
//    "FromMailBoxId": 36965,
//    "FromUserType": 0,
//    "FromUserName": "...",
//    "FromUserFullName": "...",
//    "FromUserAccountName": "...",
//    "FromUserAccountTitle": "...",
//    "ToUserId": 36990,
//    "ToUserType": 1,
//    "ToUserMailboxId": "36965",
//    "ToUserName": "...",
//    "ToUserFullName": "...",
//    "EmailAddress": "",
//    "Password": "",
//    "Subject": "",
//    "PatientMedTunnelId": "",
//    "Body": "Test",
//    "DateReceived": "4/29/2021 2:48:22 PM",
//    "DisplayDateReceived": "04/29/2021  2:48 PM",
//    "ViewCount": 0,
//    "ViewedOn": "",
//    "AttachmentCount": 1,
//    "AttachmentNames": [
//      {
//        "MessageId": 989448,
//        "Id": 424857,
//        "Name": "starfish.jpg.35910fe9-4118-414c-a845-4d092ca6e784",
//        "DisplayName": "starfish.jpg",
//        "Size": 6229,
//        "WasViewed": false,
//        "ViewedOn": "",
//        "ViewCount": 0,
//        "Location": "Default"
//      }
//    ],
//    "AllRecipients": [
//      {
//        "Id": 989448,
//        "UserName": "...",
//        "AccountId": 0,
//        "AccountName": "...",
//        "AccountTitle": "",
//        "FirstName": "...",
//        "LastName": "...",
//        "EmailAddress": "",
//        "LastSentOn": "",
//        "SendCount": 0,
//        "IsFavorite": false
//      }
//    ],
//    "Status": 0,
//    "ParentMessageId": 989448,
//    "DistributionListId": 0,
//    "DistributionListName": "",
//    "BodyHistory": "",
//    "ReadReceiptCallbackUrl": null,
//    "SendGlobalNotifications": false
//  }

int MessageId;
NSString *Name = 0;
NSString *DisplayName = 0;
int Size;
BOOL WasViewed;
NSString *Location = 0;
NSString *UserName = 0;
int AccountId;
NSString *AccountName = 0;
NSString *AccountTitle = 0;
NSString *FirstName = 0;
NSString *LastName = 0;
NSString *LastSentOn = 0;
int SendCount;
BOOL IsFavorite;

int Id = [[jsonData IntOf: @"Id"] intValue];
int FromUserId = [[jsonData IntOf: @"FromUserId"] intValue];
int FromMailBoxId = [[jsonData IntOf: @"FromMailBoxId"] intValue];
int FromUserType = [[jsonData IntOf: @"FromUserType"] intValue];
NSString *FromUserName = [jsonData StringOf: @"FromUserName"];
NSString *FromUserFullName = [jsonData StringOf: @"FromUserFullName"];
NSString *FromUserAccountName = [jsonData StringOf: @"FromUserAccountName"];
NSString *FromUserAccountTitle = [jsonData StringOf: @"FromUserAccountTitle"];
int ToUserId = [[jsonData IntOf: @"ToUserId"] intValue];
int ToUserType = [[jsonData IntOf: @"ToUserType"] intValue];
NSString *ToUserMailboxId = [jsonData StringOf: @"ToUserMailboxId"];
NSString *ToUserName = [jsonData StringOf: @"ToUserName"];
NSString *ToUserFullName = [jsonData StringOf: @"ToUserFullName"];
NSString *EmailAddress = [jsonData StringOf: @"EmailAddress"];
NSString *Password = [jsonData StringOf: @"Password"];
NSString *Subject = [jsonData StringOf: @"Subject"];
NSString *PatientMedTunnelId = [jsonData StringOf: @"PatientMedTunnelId"];
NSString *Body = [jsonData StringOf: @"Body"];
NSString *DateReceived = [jsonData StringOf: @"DateReceived"];
NSString *DisplayDateReceived = [jsonData StringOf: @"DisplayDateReceived"];
int ViewCount = [[jsonData IntOf: @"ViewCount"] intValue];
NSString *ViewedOn = [jsonData StringOf: @"ViewedOn"];
int AttachmentCount = [[jsonData IntOf: @"AttachmentCount"] intValue];
int Status = [[jsonData IntOf: @"Status"] intValue];
int ParentMessageId = [[jsonData IntOf: @"ParentMessageId"] intValue];
int DistributionListId = [[jsonData IntOf: @"DistributionListId"] intValue];
NSString *DistributionListName = [jsonData StringOf: @"DistributionListName"];
NSString *BodyHistory = [jsonData StringOf: @"BodyHistory"];
NSString *ReadReceiptCallbackUrl = [jsonData StringOf: @"ReadReceiptCallbackUrl"];
BOOL SendGlobalNotifications = [jsonData BoolOf: @"SendGlobalNotifications"];
int i = 0;
int count_i = [[jsonData SizeOfArray: @"AttachmentNames"] intValue];
while (i < count_i) {
    jsonData.I = [NSNumber numberWithInt: i];
    MessageId = [[jsonData IntOf: @"AttachmentNames[i].MessageId"] intValue];
    Id = [[jsonData IntOf: @"AttachmentNames[i].Id"] intValue];
    Name = [jsonData StringOf: @"AttachmentNames[i].Name"];
    DisplayName = [jsonData StringOf: @"AttachmentNames[i].DisplayName"];
    Size = [[jsonData IntOf: @"AttachmentNames[i].Size"] intValue];
    WasViewed = [jsonData BoolOf: @"AttachmentNames[i].WasViewed"];
    ViewedOn = [jsonData StringOf: @"AttachmentNames[i].ViewedOn"];
    ViewCount = [[jsonData IntOf: @"AttachmentNames[i].ViewCount"] intValue];
    Location = [jsonData StringOf: @"AttachmentNames[i].Location"];
    i = i + 1;
}

i = 0;
count_i = [[jsonData SizeOfArray: @"AllRecipients"] intValue];
while (i < count_i) {
    jsonData.I = [NSNumber numberWithInt: i];
    Id = [[jsonData IntOf: @"AllRecipients[i].Id"] intValue];
    UserName = [jsonData StringOf: @"AllRecipients[i].UserName"];
    AccountId = [[jsonData IntOf: @"AllRecipients[i].AccountId"] intValue];
    AccountName = [jsonData StringOf: @"AllRecipients[i].AccountName"];
    AccountTitle = [jsonData StringOf: @"AllRecipients[i].AccountTitle"];
    FirstName = [jsonData StringOf: @"AllRecipients[i].FirstName"];
    LastName = [jsonData StringOf: @"AllRecipients[i].LastName"];
    EmailAddress = [jsonData StringOf: @"AllRecipients[i].EmailAddress"];
    LastSentOn = [jsonData StringOf: @"AllRecipients[i].LastSentOn"];
    SendCount = [[jsonData IntOf: @"AllRecipients[i].SendCount"] intValue];
    IsFavorite = [jsonData BoolOf: @"AllRecipients[i].IsFavorite"];
    i = i + 1;
}