Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

Send DocuSign XML Request

See more HTTP Misc Examples

Demonstrates how to send a DocuSign XML request.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Http;
import com.chilkatsoft.chilkat2.HttpRequest;
import com.chilkatsoft.chilkat2.HttpResponse;
import com.chilkatsoft.chilkat2.Xml;

public class ChilkatExample {

    public static void main(String[] args) {
        // This requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        HttpRequest req = new HttpRequest();

        req.setHttpVerb("POST");

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

        req.addHeader("Accept", "application/xml");

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

        Xml xmlCred = new Xml();
        xmlCred.setTag("DocuSignCredentials");
        xmlCred.updateChildContent("Username", "YOUR_DOCUSIGN_USERNAME");
        xmlCred.updateChildContent("Password", "YOUR_DOCUSIGN_PASSWORD");
        xmlCred.updateChildContent("IntegratorKey", "ABCD-12345678-1234-AAAA-BBBB-abcdabcdabcd");
        xmlCred.setEmitXmlDecl(false);
        xmlCred.setEmitCompact(true);
        req.addHeader("X-DocuSign-Authentication", xmlCred.getXml());

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

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

        System.out.println(xml.getXml());

        xml.setEmitCompact(true);

        req.addStringForUpload2("", "", xml.getXml(), "utf-8", "application/xml");
        req.addFileForUpload2("", "qa_data/pdf/signatureForm.pdf", "application/pdf");
        req.addSubHeader(1, "Content-Disposition", "file; filename=\"signatureForm.pdf\";documentid=1");

        Http http = new Http();

        http.setSessionLogFilename("qa_output/log.txt");

        HttpResponse resp = new HttpResponse();
        try {
            http.httpSReq("na2.docusign.net", 443, true, req, resp);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        if (resp.getStatusCode() != 201) {
            System.out.println(resp.getBodyStr());
            System.out.println("Response status code: " + resp.getStatusCode());
            System.out.println("Failed.");
            return;
        }

        // Examine the response..
        xml.loadXml(resp.getBodyStr());
        String envelopeId = xml.getChildContent("envelopeId");
        System.out.println("envelopeId = " + envelopeId);
        String status = xml.getChildContent("status");
        System.out.println("status = " + status);
        String statusDateTime = xml.getChildContent("statusDateTime");
        System.out.println("statusDateTime = " + statusDateTime);
        String uri = xml.getChildContent("uri");
        System.out.println("uri = " + uri);
    }
}