【问题标题】:How can I retrieve a Sharepoint 2013 document using RPGLE?如何使用 RPGLE 检索 Sharepoint 2013 文档?
【发布时间】:2017-07-24 00:54:29
【问题描述】:

我需要以编程方式从 Sharepoint 2013 检索文档,以用于在 IBM i 上运行的 RPGLE 程序。有没有人做过类似的事情?至少,如果我可以将文档从 Sharepoint 中取出并放到网络文件共享中,我就知道如何从那里获取它。我探索了许多不同的可能性,但我不了解 C# 或 .NET,并且我正在努力寻找适合我的东西。

【问题讨论】:

    标签: sharepoint sharepoint-2013 ibm-midrange rpgle rpg


    【解决方案1】:

    如果 RPGLE 支持,您可以通过 REST API 访问 SharePoint 2013 数据。 您可能需要为此设置正确的身份验证。

    REST API 的文档可以在 MSDN 上找到

    【讨论】:

      【解决方案2】:

      假设您可以在 RPG 中解析您的文档,您可以使用带有共享点 REST API GetFolderByServerRelativeUrl 的 sql 函数 HTTPGETBLOB 到 retrieve a document via HTTP

      在 SQLRPGLE 中使用 HTTPGETBLOB SQL 函数。此处示例 IBM i SQL HTTP Services ,请务必在标头中传递共享点授权/令牌:

      url: http://site url/_api/web/GetFileByServerRelativeUrl('/Folder Name/file name')/$value
      method: GET
      headers:
          Authorization: "Bearer " + accessToken
      

      如果你的文档很长,你应该用IFS写,如上一个链接解释的那样,否则RPG可变长度可能不够。

      【讨论】:

      • 这听起来是一个很好的解决方案,Dam。我会试一试,让你知道它是如何工作的。谢谢!
      • 大坝,知道如何获取 SQLRPGLE 中授权标头的 accessToken 吗?
      • 我已经成功地将这种方法用于 Alfresco 而不是 Sharepoint。使用 Alfresco 很容易获得 auth 令牌。我目前不使用sharepoint,我认为它很简单,但获取令牌似乎很棘手,我搜索了一点但找不到明确的答案,请参阅how-can-i-get-an-oauth-access-token-in-sharepoint-2013
      • 即使在javascript中似乎也很难,所以在RPG中......面对如此困难的过程,我个人会找到一个Java库来为我做这件事:登录/检索文件中的IFS,并从 RPG 中调用它。我看到了“Jshare API”或sharepoint-rest-interface
      • 谢谢,达姆。在向您提出第二个问题之前,我进行了很多搜索并遇到了同样的绊脚石。回到绘图板,我猜。但是,您获取文档的整体技术确实很有帮助。绝对是我工具箱里的一个。
      【解决方案3】:

      更新: 通过在 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;
      

      更多详情请见here

      【讨论】:

        猜你喜欢
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        • 2020-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多