Я пытаюсь создать временный документ в Adobe Sign, используя остальные API. После большого количества исследований я смог сделать правильный мультиформный запрос в Salesforce Apex. Но теперь я получаю сообщение об ошибке отсутствия содержимого файла, когда проверяю журнал отладки в Adobe Sign Account. Ниже приведен фрагмент моего кода:
String boundary = '----------------------------741e90d31eff';
String header = '--'+boundary+'\nContent-Disposition: form-data; name="file"; filename="testsign.pdf";\nContent-Type: application/octet-stream';
String footer = '--'+boundary+'--';
String headerEncoded = EncodingUtil.base64Encode(Blob.valueOf(header+'\r\n\r\n'));
while(headerEncoded.endsWith('='))
{
header+=' ';
headerEncoded = EncodingUtil.base64Encode(Blob.valueOf(header+'\r\n\r\n'));
}
Blob testFileContent = Blob.valueOf('test file is sdfsdfsfs');
// Blob testFileContent =[SELECT VersionData FROM ContentVersion WHERE ContentDocumentId = '0690x000001OhAu'][0].VersionData;
String bodyEncoded = EncodingUtil.base64Encode(testFileContent);
system.debug('bodyEncoded'+bodyEncoded);
Blob bodyBlob = null;
String last4Bytes = bodyEncoded.substring(bodyEncoded.length()-4,bodyEncoded.length());
if(last4Bytes.endsWith('==')) {
system.debug('inside first');
last4Bytes = last4Bytes.substring(0,2) + '0K';
bodyEncoded = bodyEncoded.substring(0,bodyEncoded.length()-4) + last4Bytes;
String footerEncoded = EncodingUtil.base64Encode(Blob.valueOf(footer));
bodyBlob = EncodingUtil.base64Decode(headerEncoded+bodyEncoded+footerEncoded);
} else if(last4Bytes.endsWith('=')) {
system.debug('inside second');
last4Bytes = last4Bytes.substring(0,3) + 'N';
bodyEncoded = bodyEncoded.substring(0,bodyEncoded.length()-4) + last4Bytes;
footer = '\n' + footer;
String footerEncoded = EncodingUtil.base64Encode(Blob.valueOf(footer));
bodyBlob = EncodingUtil.base64Decode(headerEncoded+bodyEncoded+footerEncoded);
} else {
system.debug('inside third');
footer = '\r\n' + footer;
String footerEncoded = EncodingUtil.base64Encode(Blob.valueOf(footer));
bodyBlob = EncodingUtil.base64Decode(headerEncoded+bodyEncoded+footerEncoded);
}
system.debug('bodyBlob'+bodyBlob);
HttpRequest req = new HttpRequest();
String authorizationHeader = 'Bearer ' +acceessToken;
req.setHeader('Authorization', authorizationHeader);
req.setHeader('Content-Type','multipart/form-data; boundary='+boundary);
req.setMethod('POST');
req.setEndpoint('https://api.in1.echosign.com/api/rest/v6/transientDocuments');
req.setBodyAsBlob(bodyBlob);
req.setTimeout(120000);
Http http = new Http();
try{
HTTPResponse res = http.send(req);
И следующий ответ от знака Adobe:
Metadata
x-request-id : ecca058a-02b7-4dfe-8e9a-a64869798407
content-type : application/json
status : 400
Body
{
"code": "NO_FILE_CONTENT",
"message": "Must provide file body"
}
Пожалуйста, кто-нибудь, если у меня есть такая же проблема, помогите мне с этим, что я здесь упускаю.