#javascript #sharepoint #salesforce #apex #apex-code
#javascript #sharepoint #salesforce #apex #apex-code
Вопрос:
Я пытаюсь загрузить файл из Apex в Sharepoint, но получаю сообщение об ошибке «400 с ошибочным запросом».Но работайте с кодом JS. Ниже приведен мой фрагмент кода :
- Код Apex
Http http = new Http();
HttpRequest httpRequestToSend = new HttpRequest();
httpRequestToSend.setEndpoint('https://sample.sharepoint.com/sites/siteName/_api/web/GetFolderByServerRelativeUrl('' '/sites/siteName/Shared Documents' '')/Files/Add(url='' 'document3.txt' '', overwrite=true)');
httpRequestToSend.setMethod('POST');
httpRequestToSend.setHeader('Authorization', 'Bearer ' token);
httpRequestToSend.setHeader('Content-Type','application/json; odata=verbose');
httpRequestToSend.setBodyAsBlob(Blob.ValueOf('test Message'));
System.debug('***** httpRequestToSend-->' httpRequestToSend);
Http http1 = new Http();
HttpResponse httpResponse1 = http1.send(httpRequestToSend);
System.debug('***** httpResponse-->' httpResponse1.toString());
System.debug(httpResponse1.getBody());
- JS-КОД
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer " Token);
myHeaders.append("Content-Type", "application/json;odata=verbose");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: fileBuffer,
};
fetch('https://sample.sharepoint.com/sites/siteName/_api/web/GetFolderByServerRelativeUrl('/sites/siteName/Shared Documents')/Files/Add(url='test.txt', overwrite=true)', requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => alert('error', error));
}
Спасибо
Ответ №1:
Согласно документации, salesforce не может напрямую подключиться к FTP, что означает, что не может прочитать / записать файл на FTP-сервере.
Я также столкнулся с этой проблемой, и вот как я ее решил:-
Шаг 1: Создайте и разместите внешний API на любом языке (C #, Python), который принимает два параметра, один как fileName, а другой как fileData, и загружает этот файл.
Шаг 2: В конце Salesforce используйте этот API с помощью HttpRequest и передайте свой файл как filedata и fileName.
public void uploadFileToFTP_Service(string fileName,string fileData)
{
string value='{"fileName":"' fileName '","fileData": "' fileData '"}';
HttpRequest req = new HttpRequest();
req.setEndpoint('http://yourhostedApIPath:9001/data');
req.setMethod('POST');
req.setTimeout(120000);
req.setHeader('content-type','application/json; charset=utf-8');
req.setBody(value);
Http http = new Http();
HttpResponse res = http.send(req);
system.debug('Status code: ' res.getStatusCode());
}
Ответ №2:
Сегодня я некоторое время ломал голову над этим и, наконец, смог преодолеть ошибку «400 Bad Request», избежав пробелов в моем относительном URL-адресе (я ожидаю, что для имени файла может потребоваться тот же обходной путь).).
Каждый пробел (» «) должен быть заменен ссылкой ASCII » «
итак, в вашем примере URL конечной точки:
'https://sample.sharepoint.com/sites/siteName/_api/web/GetFolderByServerRelativeUrl('/sites/siteName/Shared Documents')/Files/Add(url='test.txt', overwrite=true)'
следует изменить на:
'https://sample.sharepoint.com/sites/siteName/_api/web/GetFolderByServerRelativeUrl('/sites/siteName/Shared Documents')/Files/Add(url='test.txt', overwrite=true)'
По крайней мере, в моем случае это устранило проблему.