Мне нужно программно получить документ из Sharepoint 2013 для использования в программе RPGLE, работающей на IBM i. Кто-нибудь когда-нибудь делал что-то подобное? По крайней мере, если я могу получить документ из Sharepoint в общий сетевой ресурс, я знаю, как получить его оттуда. Я исследовал множество различных возможностей, но я не знаю C# или .NET, и я изо всех сил пытаюсь найти что-то, что я могу адаптировать для работы на себя.
Как я могу получить документ Sharepoint 2013 с помощью RPGLE?
Ответы (3)
Вы можете получить доступ к данным SharePoint 2013 через REST API, если это поддерживает RPGLE. Возможно, вам потребуется настроить надлежащую аутентификацию для того же.
Документацию по REST API можно найти в MSDN.
Предполагая, что вы можете разобрать документ в RPG, вы можете использовать функцию sql HTTPGETBLOB с API-интерфейсом REST Sharepoint GetFolderByServerRelativeUrl для получить документ через HTTP
Используйте функцию HTTPGETBLOB SQL в SQLRPGLE. Здесь пример IBM i SQL HTTP Services , обязательно передайте авторизацию/токен sharepoint в заголовке:
url: http://site url/_api/web/GetFileByServerRelativeUrl('/Folder Name/file name')/$value
method: GET
headers:
Authorization: "Bearer " + accessToken
Если ваш документ длинный, вы должны написать его в IFS, как это объясняется в предыдущей ссылке, иначе переменной длины RPG может быть недостаточно.
Обновление: мне удалось добиться того, что я пытался сделать, используя HTTPAPI Скотта Клемента с открытым исходным кодом в программе RPG:
Ctl-opt DftActGrp(*No);
Ctl-opt BndDir('HTTPAPI');
/include libhttp/qrpglesrc,httpapi_h
Dcl-s rc Int(10);
Dcl-s url Varchar(300);
Dcl-s ifs Varchar(256);
Dcl-s pwtype Char(1);
Dcl-s userid Char(50);
Dcl-s password Char(50);
// Turn on debugging for troubleshooting. It will write a debug log file
// to the IFS in /tmp/httpapi_debug.txt
http_debug(*ON);
url = 'http://sharepoint/path/to/file/thefile.pdf';
ifs = '/temp/myfile.pdf';
// Set password type for SharePoint's NTLM authentication requirement
pwtype = HTTP_AUTH_NTLM;
// Set user and password
userid = 'theuser';
password = 'thepassword';
// Set credentials for authentication
http_setAuth(pwtype: userid: password);
// Call HTTPAPI's routine to download the file to the IFS
rc = http_req('GET': url: ifs);
// End gracefully if error
if rc <> 1;
http_crash();
endif;
*inlr = *on;
Более подробную информацию можно найти на здесь.