Sample code for 30+ languages & platforms
Objective-C

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttpRequest.h>
#import <CkoXml.h>
#import <CkoHttp.h>
#import <CkoHttpResponse.h>
#import <NSString.h>

BOOL success = NO;

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

CkoHttpRequest *req = [[CkoHttpRequest alloc] init];

req.HttpVerb = @"POST";

// Replace "12999999" with your own account number. (12999999 is a ficticious account number)
req.Path = @"/restapi/v2/accounts/12999999/envelopes";

[req AddHeader: @"Accept" value: @"application/xml"];

// Don't worry about the boundary string.  Chilkat will automatically generate one and include it.
req.ContentType = @"multipart/form-data";

CkoXml *xmlCred = [[CkoXml alloc] init];
xmlCred.Tag = @"DocuSignCredentials";
[xmlCred UpdateChildContent: @"Username" value: @"YOUR_DOCUSIGN_USERNAME"];
[xmlCred UpdateChildContent: @"Password" value: @"YOUR_DOCUSIGN_PASSWORD"];
[xmlCred UpdateChildContent: @"IntegratorKey" value: @"ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd"];
xmlCred.EmitXmlDecl = NO;
xmlCred.EmitCompact = YES;
[req AddHeader: @"X-DocuSign-Authentication" value: [xmlCred GetXml]];

// Don't worry about Host or Content-Length headers, Chilkat automatically adds them...

// Build the XML for the 1st body part..
CkoXml *xml = [[CkoXml alloc] init];
xml.Tag = @"envelopeDefinition";
[xml AddAttribute: @"xmlns" value: @"http://www.docusign.com/restapi"];
[xml UpdateChildContent: @"emailSubject" value: @"Signature Request: Test Test:001019:033611"];
[xml UpdateChildContent: @"status" value: @"sent"];
[xml UpdateChildContent: @"documents|document|documentId" value: @"1"];
[xml UpdateChildContent: @"documents|document|name" value: @"001019_TestTest_RetailDeals_163357"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|hostEmail" value: @"admin@chilkatsoft.com"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|hostName" value: @"Chilkat Admin"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|signerName" value: @"Test  Test"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|recipientId" value: @"1"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|routingOrder" value: @"1"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|signerEmail" value: @"test@tyest.com"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|anchorString" value: @"\\SDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere|optional" value: @"False"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|anchorString" value: @"\\OSDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[1]|optional" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|anchorString" value: @"\\OPSSDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|optional" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[2]|scaleValue" value: @"0.7"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|anchorString" value: @"\\PSSDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|optional" value: @"False"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|signHereTabs|signHere[3]|scaleValue" value: @"0.7"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|anchorString" value: @"\\IDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere|optional" value: @"False"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|anchorString" value: @"\\OIDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[1]|optional" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|anchorString" value: @"\\OPSIDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|optional" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[2]|scaleValue" value: @"0.5"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|anchorString" value: @"\\PSIDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|optional" value: @"False"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner|tabs|initialHereTabs|initialHere[3]|scaleValue" value: @"0.5"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|hostEmail" value: @"admin@chilkatsoft.com"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|hostName" value: @"Chilkat Admin"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|signerName" value: @"Dealer Representative"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|recipientId" value: @"2"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|routingOrder" value: @"2"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|anchorString" value: @"\\DSDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere|optional" value: @"False"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|anchorString" value: @"\\DOSDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|signHereTabs|signHere[1]|optional" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|anchorString" value: @"\\DIDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere|optional" value: @"False"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorIgnoreIfNotPresent" value: @"True"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|anchorString" value: @"\\DOIDP"];
[xml UpdateChildContent: @"recipients|inPersonSigners|inPersonSigner[1]|tabs|initialHereTabs|initialHere[1]|optional" value: @"True"];
xml.EmitXmlDecl = NO;

NSLog(@"%@",[xml GetXml]);

xml.EmitCompact = YES;

[req AddStringForUpload2: @"" filename: @"" strData: [xml GetXml] charset: @"utf-8" contentType: @"application/xml"];
[req AddFileForUpload2: @"" path: @"qa_data/pdf/signatureForm.pdf" contentType: @"application/pdf"];
[req AddSubHeader: [NSNumber numberWithInt: 1] name: @"Content-Disposition" value: @"file; filename=\"signatureForm.pdf\";documentid=1"];

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

http.SessionLogFilename = @"qa_output/log.txt";

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

if ([resp.StatusCode intValue] != 201) {
    NSLog(@"%@",resp.BodyStr);
    NSLog(@"%@%d",@"Response status code: ",[resp.StatusCode intValue]);
    NSLog(@"%@",@"Failed.");
    return;
}

// Examine the response..
[xml LoadXml: resp.BodyStr];
NSString *envelopeId = [xml GetChildContent: @"envelopeId"];
NSLog(@"%@%@",@"envelopeId = ",envelopeId);
NSString *status = [xml GetChildContent: @"status"];
NSLog(@"%@%@",@"status = ",status);
NSString *statusDateTime = [xml GetChildContent: @"statusDateTime"];
NSLog(@"%@%@",@"statusDateTime = ",statusDateTime);
NSString *uri = [xml GetChildContent: @"uri"];
NSLog(@"%@%@",@"uri = ",uri);