SAP PI:休息场景的代理后续调用获取令牌并上传文件

2020-08-31 23:56发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


所有人,

目前,我正面临有关我的知识的棘手要求。 我必须将文件从代理服务器上传到Rest,但是在上传之前,我必须从API REST获取令牌。 所以我有2个不同的url,第一个是URL LOGIN,第二个是URL Upload File。 我同步了第一个场景,在该场景中,我使用用户名密码和company进行请求,并获得响应令牌。 现在,我必须使用此令牌来进行第二次呼叫。 我的想法是在ECC端执行程序ZPROGRAM,在LOGIN方法之前,我调用这两种方法,将令牌存储在变量中,随后我将调用第二种方法(UPLOAD FILE),该变量将变量中的令牌和上载文件作为附件传递 。 如何在渠道一级进行最后一步? 我认为我必须像其他HTTP标头一样传递令牌,但是我不知道如何...

请有人可以告诉我如何并发布一些有关解决方案的屏幕截图/代码

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


所有人,

目前,我正面临有关我的知识的棘手要求。 我必须将文件从代理服务器上传到Rest,但是在上传之前,我必须从API REST获取令牌。 所以我有2个不同的url,第一个是URL LOGIN,第二个是URL Upload File。 我同步了第一个场景,在该场景中,我使用用户名密码和company进行请求,并获得响应令牌。 现在,我必须使用此令牌来进行第二次呼叫。 我的想法是在ECC端执行程序ZPROGRAM,在LOGIN方法之前,我调用这两种方法,将令牌存储在变量中,随后我将调用第二种方法(UPLOAD FILE),该变量将变量中的令牌和上载文件作为附件传递 。 如何在渠道一级进行最后一步? 我认为我必须像其他HTTP标头一样传递令牌,但是我不知道如何...

请有人可以告诉我如何并发布一些有关解决方案的屏幕截图/代码

谢谢

付费偷看设置
发送
6条回答
何必丶何苦呢
1楼-- · 2020-09-01 00:26

您好,Claudio,

您正在使用哪个版本的PI。 您正在使用REST适配器还是HTTP适配器。

如果您正在使用REST适配器,则可以关注我的博客以使用标准功能来满足您的要求

https://blogs.sap.com/2019/04/25/fetch-oauth-token-token-in-rest-is-of-the-box-of-box/

Regles,

Vikas

木偶小白
2楼-- · 2020-09-01 00:08

HI Vikas,

适配器是REST,PI版本是7.50。
我有两个不同的URL,一个用于登录,另一个用于上载文件。
我该如何处理您的笔记?

谢谢

宇峰Kouji
3楼-- · 2020-09-01 00:05

你好克劳迪奥,

致谢

看看这个博客

https://blogs.sap.com/2019/03/13/sap-to-sharepoint-integration-via-microsoft-graph-using-sap-po-rest -adapter-no-udfs-for-oauth/

在这里您可以看到PI REST Receiver通道在如何处理令牌以及API调用(文件上载)方面具有更多功能。

选项1)

您需要在Receiver REST通道中维护客户端ID客户端机密等值(在第一次尝试中很少能解决,但是您需要继续试验参数)。

关于您从第一个调用中获得的AccessToken,可以由接收者的休息通道在内部处理。

选项2)您在问题中问过的

您只能将REST接收器通道用于文件上传,但是在这种情况下,您需要在上传文件时提供accessToken。 在继续之前,您需要记住,如果此过程是异步的,那么您提供的accessToken通常会在30分钟或1小时后过期,因此您永远无法重试该失败消息!

选项1中没有这个缺点。现在回到选项2

这包括两个部分

a)您需要在Receiver Rest通道中设置动态的Custom属性(我更喜欢名称为" Token"的变量)。 将其视为ASMA参数,您可以在消息映射中使用"动态配置"来设置它。

b)一旦在ESR的"请求消息"映射中将上述动态自定义属性设置为名称"令牌",您现在需要将其作为标头参数发送到Receiver Rest Service。

在"标题"标签中将其放置

标题名称:授权

值:(不带引号)" Bearer {Token}"

由于令牌是变量,因此大括号和Bearer关键字是大多数REST Oauth服务期望的。 但同样会因您的API而异。

现在,对于文件上传,使用Java映射并调用函数out.setOutputAttachments(X,Y)等参数,一切都很好。

致谢

Vinay Mittal

me_for_i
4楼-- · 2020-09-01 00:04

嗨Vinay,

感谢您的答复。
我正尝试使用OAuth,就像您和其他成员建议的那样。
但是我必须将我必须在第一次通话中使用的ApiKey放在哪里?
>数据格式又如何?

感谢
tab1.jpg tab2.jpg tab3.jpg

哎,真难
5楼-- · 2020-09-01 00:10
# p #

你好克劳迪奥,

关于API密钥,我在访问OpenWeather API时使用了类似" APIKey"的名称,他们希望客户端将URL中的API密钥作为参数发送,例如?APIKEY = SASRQR ## $$ @ $ ERE

我不确定您的API及其所包含的文档,建议您仔细阅读API文档,以了解应在何处以及如何传递API密钥。

致谢

Vinay

天桥码农
6楼-- · 2020-09-01 00:16

嗨Vinay,

我看到了有关ApiKey的文档,并尝试也与邮递员联系。
我需要在ApiKey上传递 标头,我尝试通过这种方式传递。
o.jpg

我也尝试对频道进行ping操作 ,但我有此错误:
error.jpg

有解决任何想法吗?

谢谢

最好的问候


一周热门 更多>