Я понимаю, что не могу напрямую вызвать метод будущего из класса пакета. Но из многих других ответов я вижу, что это можно сделать, создав вспомогательный класс и вызвав там будущий метод. Но это не работает для меня. Пожалуйста, проверьте мой код ниже. Кроме того, я попытался сделать это с классом очереди как предложено в этой ссылке , но он не работает для меня. Ошибка: «Вызов не разрешен этим будущим методом. Пожалуйста, включите вынос, аннотируя будущий метод. Например: @Future (callout = true)"
Но меня больше интересует первый и более простой способ сделать это.
public class OrdersItemsHelper {
static Document tDoc;
static blob csvBlob;
//prepare csv file to send
public static void CreateCsvFile(List<Order_Line_Items__c> orderItemsList)
{
//Code to create file here
csvBlob = Blob.valueOf(finalstr);
tDoc = new Document();
tDoc.Name = 'sales_items_' +date.today();
tDoc.Type = 'csv';
tDoc.body = csvBlob;
tDoc.FolderId = [select id from folder where name = 'Emarsys Order Files'].Id;
tDoc.ContentType = 'application/vnd.ms-excel';
Insert tDoc;
system.debug('doc inserted');
sendFile();
}
@Future(callout = true)
public static void sendFile()
{
System.debug('I am creating the post request');
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setMethod('POST');
request.setHeader('Authorization','Security Token');
request.setHeader('Accept','text/plain');
request.setHeader('Content-Type', 'text/csv');
request.setHeader('Authorization', 'Bearer ');
request.setBodyAsBlob(csvBlob);
HttpResponse response = http.send(request);
system.debug('response: ' + response);
}