function getHeaders(id, uploadId, body) {
        var headers = {},
            promise = new qq.Promise(),
            bucket = options.getBucket(id),
            host = options.getHost(id),
            signatureConstructor = getSignatureAjaxRequester.constructStringToSign
                (getSignatureAjaxRequester.REQUEST_TYPE.MULTIPART_COMPLETE, bucket, host, options.getKey(id))
                .withUploadId(uploadId)
                .withContent(body)
                .withContentType("application/xml; charset=UTF-8");

        // Ask the local server to sign the request.  Use this signature to form the Authorization header.
        getSignatureAjaxRequester.getSignature(id, {signatureConstructor: signatureConstructor}).then(promise.success, promise.failure);

        return promise;
    }
Attach all required headers (including Authorization) to the "Complete" request.  This is a promissory function
that will fulfill the associated promise once all headers have been attached or when an error has occurred that
prevents headers from being attached.

@returns {qq.Promise}