我需要编程地检索SharePoint 2013中的文档,以在IBM i上运行的RPGLE程序中使用。有人做过类似的事情吗?至少,如果我可以将文档从SharePoint中删除并进入网络文件共享,我将知道如何从那里获取它。我已经探索了许多不同的可能性,但我不知道C#或.NET,我正在努力寻找可以适应我工作的东西。
如果RPGLE支持它,则可以通过REST API访问SharePoint 2013数据。您可能需要为此设置适当的身份验证。
可以在MSDN
假设您可以在rpg中解析文档,则可以使用SQL函数httpgetBlob与SharePoint REST REST API GETFOLDERBYSERVERRERATIODURL通过http
来检索文档在sqlrpgle中使用httpgetblob sql函数。示例在此处IBM I SQL HTTP服务,请确保通过SharePoint授权/标记:
url: http://site url/_api/web/GetFileByServerRelativeUrl('/Folder Name/file name')/$value
method: GET
headers:
Authorization: "Bearer " + accessToken
如果您的文档很长,则应将其写入IF,如先前的链接所述,否则RPG变量长度可能不够。
更新:我能够通过在RPG程序中使用Scott Klement的开源HTTPAPI来实现我要做的事情:
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;
可以在此处找到更多详细信息。