Как я могу получить документ Sharepoint 2013 с помощью RPGLE?

Мне нужно программно получить документ из Sharepoint 2013 для использования в программе RPGLE, работающей на IBM i. Кто-нибудь когда-нибудь делал что-то подобное? По крайней мере, если я могу получить документ из Sharepoint в общий сетевой ресурс, я знаю, как получить его оттуда. Я исследовал множество различных возможностей, но я не знаю C# или .NET, и я изо всех сил пытаюсь найти что-то, что я могу адаптировать для работы на себя.


person evawebrez    schedule 03.03.2017    source источник


Ответы (3)


Вы можете получить доступ к данным SharePoint 2013 через REST API, если это поддерживает RPGLE. Возможно, вам потребуется настроить надлежащую аутентификацию для того же.

Документацию по REST API можно найти в MSDN.

person Jigar    schedule 04.03.2017

Предполагая, что вы можете разобрать документ в 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 может быть недостаточно.

person Dam    schedule 04.03.2017
comment
Это звучит как отличное решение, Дам. Я попробую и дам вам знать, как это работает. Спасибо! - person evawebrez; 06.03.2017
comment
Дам, есть идеи, как получить accessToken для заголовка авторизации в SQLRPGLE? - person evawebrez; 17.03.2017
comment
Я успешно использовал этот метод с Alfresco, а не с Sharepoint. Токен авторизации очень легко получить с помощью Alfresco. В настоящее время я не использую sharepoint, и я предполагал, что это просто, но получить токен кажется сложным, я немного поискал, но не смог найти окончательного ответа, см. как-я-получить-токен-доступа-oauth-в-sharepoint-2013. - person Dam; 19.03.2017
comment
Спасибо, Дам. Я много искал, прежде чем задать вам второй вопрос, и наткнулся на те же камни преткновения. Вернуться к чертежной доске, я думаю. Однако ваша общая техника захвата документа действительно полезна. Определенно один, чтобы держать в моем наборе инструментов. - person evawebrez; 20.03.2017

Обновление: мне удалось добиться того, что я пытался сделать, используя 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;

Более подробную информацию можно найти на здесь.

person evawebrez    schedule 28.03.2017