问题描述
我正在尝试能够使用 RPGLE 从我们的 IBM i 调用用于 DocuSign 和 ROOMS 的 API 以获取真实状态。我没有成功。如果有人能够做到这一点,你能分享一下吗?
解决方法
调用 DocuSign API 要求您的服务器使用 POST 动词进行 HTTPS 调用。 Google 给出了一些不错的结果,请参阅 https://www.google.com/search?q=rpgle+call+rest+api
另见this presentation by Scott Klement
最好的办法是在 RPGLE 论坛上提问。调用 DocuSign API 和获取 OAuth 访问令牌(可能通过 JWT 授权)是主要问题。一旦您能够做到这一点,就可以通过 JSON 或 XML 发送实际的 API 请求。
一个不同的想法可能是使用不同的服务器与 DocuSign 进行通信,如果这样会更容易的话。 -- 第二台服务器可以运行 Windows 或 Linux。
,我在 RDi 调试中运行它并查看验证后的值。 这是实现此目的的 GETACCN2 RPGLE POC 代码示例: **自由 ctl-opt 选项 (*srcstmt : *nodebugio : *nounref) 行动组(*调用者); ctl-opt 调试 (*input);
dcl-pr getenv pointer extproc('getenv');
*n pointer value options(*string:*trim);
end-pr;
dcl-pr setEnv extpgm('SETENV');
end-pr;
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Workfields
// - - - - - - -
dcl-s WebServiceUrl varchar(1024) inz;
dcl-s WebServiceHeader varchar(1024) inz;
dcl-s account varchar(200) inz;
dcl-s token varchar(1000) inz;
dcl-s qs_acname varchar(30) inz;
dcl-s acName varchar(30) inz;
//--------------------------------------------------------
account = '3d3e586b-XXXX-4d02-yyyy-f64a68cf41db';
setEnv();
// Get API key stored setENV
token = %str(getenv('ESIGN')) ;
Exsr SetUp;
Exsr ConsumeWs;
*Inlr = *On;
Return;
//--------------------------------------------------------
// SetUp subroutine
//--------------------------------------------------------
Begsr SetUp;
// this would be a soft-coded parameter passed to the program
WebServiceUrl =
'https://demo.docusign.net/restapi/v2.1/accounts/' + %trim(account) +
'?include_account_settings=true';
WebServiceHeader =
'<httpHeader>'+
'<header name="accept" value="application/json" />'+
'<header name="authorization" value= "Bearer '+ %trim(token)+ '"'+
'/>'+
'<header name="Accept-Encoding" value = "gzip,deflate,br"/>'+
'</httpHeader>';
Endsr;
//--------------------------------------------------------
// ConsumeWs subroutine
//--------------------------------------------------------
Begsr ConsumeWs;
Exec sql
Select ws_acname
INTO :qs_acname
from
Json_Table(Systools.HttpGetClob(:WebServiceUrl,:WebServiceHeader),'$'
Columns(ws_acname Varchar(30) Path 'lax $.accountName')
) As x;
acname = qs_acname;
Endsr;
SETENV CLLE 代码:
PGM /* Sets enviromnet variables with token values */
ADDENVVAR ENVVAR('ESIGN') +
VALUE('eyJ0eXAiO etc token key.... +
kiHX6jlcGbRKsyg8_5Klg9SS2S4upZ5AQ') REPLACE(*YES)
MONMSG MSGID(CPFA980)
ENDPGM
getenv 只是一个指向 Environment 变量的指针。
,能够获得 OAuth 令牌并在星期五下午晚些时候使用 Systools.HttpGetClob 成功创建了一个获取帐户。感谢您抽出时间回复我。