如何使用RPGLE检索Sharepoint 2013文档?
我需要以编程方式从Sharepoint 2013检索文档,以便在IBMi上运行的RPGLE程序中使用。有人做过类似的事情吗?至少,如果我能将文档从Sharepoint中取出并放到网络文件共享中,我知道如何从那里获取它。我已经探索了许多不同的可能性,但我不知道C#或.NET,我正在努力寻找适合我的东西。如果RPGLE支持,您可以通过REST API访问SharePoint 2013数据。 您可能需要为相同的设置正确的身份验证如何使用RPGLE检索Sharepoint 2013文档?,sharepoint,sharepoint-2013,ibm-midrange,rpgle,rpg,Sharepoint,Sharepoint 2013,Ibm Midrange,Rpgle,Rpg,我需要以编程方式从Sharepoint 2013检索文档,以便在IBMi上运行的RPGLE程序中使用。有人做过类似的事情吗?至少,如果我能将文档从Sharepoint中取出并放到网络文件共享中,我知道如何从那里获取它。我已经探索了许多不同的可能性,但我不知道C#或.NET,我正在努力寻找适合我的东西。如果RPGLE支持,您可以通过REST API访问SharePoint 2013数据。 您可能需要为相同的设置正确的身份验证 REST API的文档可以在上找到假设您可以在RPG中解析文档,您可以使
REST API的文档可以在上找到假设您可以在RPG中解析文档,您可以使用sql函数HTTPGETBLOB和sharepoint REST API GetFolderByServerRelativeUrl来 在SQLRPLE中使用HttpGetBlobSQL函数。例如,请确保在标题中传递sharepoint授权/令牌:
url: http://site url/_api/web/GetFileByServerRelativeUrl('/Folder Name/file name')/$value
method: GET
headers:
Authorization: "Bearer " + accessToken
如果您的文档很长,您应该在IFS中编写,如前一链接所述,否则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;
Ctl opt DftActGrp(*否);
Ctl opt BndDir(“HTTPAPI”);
/包括libhttp/qrpglesrc、httpapi_h
Dcl-src-Int(10);
Dcl-s url Varchar(300);
Dcl-s ifs Varchar(256);
Dcl-s PWS型字符(1);
Dcl-s用户标识字符(50);
Dcl-s密码字符(50);
//启用调试以进行故障排除。它将写入一个调试日志文件
//到/tmp/httpapi_debug.txt中的IFS
http_调试(*打开);
url='1〕http://sharepoint/path/to/file/thefile.pdf';
ifs='/temp/myfile.pdf';
//为SharePoint的NTLM身份验证要求设置密码类型
pwtype=HTTP\u AUTH\u NTLM;
//设置用户和密码
userid='theuser';
密码='密码';
//设置身份验证的凭据
http_setAuth(pwtype:userid:password);
//调用HTTPAPI的例程将文件下载到IFS
rc=http_-req('GET':url:ifs);
//如果出现错误,请优雅地结束
若为rc 1;
http_crash();
endif;
*inlr=*on;
可以找到更多详细信息。这听起来是一个很好的解决方案,达姆。我会试一试,让你知道结果如何。谢谢Dam,知道如何在SQLRPGLE中获取授权头的accessToken吗?我已经成功地将此方法用于Alfresco,而不是Sharepoint。使用Alfresco很容易获得auth令牌。我目前不使用sharepoint,我认为它很简单,但获取令牌似乎很困难,我搜索了一些,但找不到明确的答案,请参见。即使在javascript中,这似乎也很困难,所以在RPG中。。。面对这样一个困难的过程,我个人会找到一个Java库来为我做这件事:在IFS中登录/检索文件,并从RPG调用它。我看了《JShareAPI》或《谢谢你,达姆》。在向您提出第二个问题之前,我做了很多搜索,并遇到了同样的绊脚石。我想还是回到绘图板上来吧。然而,您获取文档的总体技术确实很有用。我的工具箱里肯定有一个。