我正在尝试使用选项后台通过 proc http 从 SAS 调用存储进程 (STP),以确保我的主进程不会等待 STP 完成。我确实使用以下代码:
filename resp "<path to response file>";
%let url = https://<ServerName>:<port>/SASStoredProcess/do;
%let question_mark = ?;
proc http
url="%str(&url.)&question_mark.%nrstr(_action=background&_program=<path to STP>&num1=11&num2=22)"
out=resp
http_tokenauth;
HEADERS "Content-Type"="application/x-www-form-urlencoded" "Accept"="application/json";
quit;
不幸的是,在我的响应文件中,我总是收到 SAS 登录页面。
将用户名/密码作为我的 URL 的一部分发送确实有效,但出于安全原因不需要这样做。因此我需要使用 http_tokenauth,它适用于非后台 STP。
另外,当我将 URL 粘贴到浏览器时,它确实有效。
我如何确保它也可以使用 proc http 和 http_tokenauth 工作?
附加信息:
Setup:
我确实有一个 STP,流程引擎通过 REST 调用它,并期望立即得到包含 ID 的答案。(主 STP)
然后,该主 STP 需要调用包含进程的子 STP,该进程大约需要 10 分钟。需要一小时才能完成。因此,我不希望主 STP 等待子 STP 完成。
因此,应在后台调用子 STP。
令牌身份验证仅在使用“do1”而不是“做”。
参考文档:
此外,我使用查询来传递参数,这使得它更加清晰。
所以现在这确实有效:
%let url = https://<ServerName>:<port>/SASStoredProcess/do1;
proc http
url="%str(&url.)"
query=("_action" = "background"
"_program" = "<path to STP>"
"num1" = "1"
"num2" = "2"
)
ct="application/x-www-form-urlencoded"
http_tokenauth
out=resp;
quit;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)