如何通过Basic Auth获取REST API令牌及使用REST适配器发送登录对象
在SAP PO中使用REST适配器实现带认证的登录请求及令牌复用
针对你的需求(REST -> SAP PO -> SFTP文件传输,前置登录API需Basic认证+特定格式请求),以下是具体实现步骤:
一、配置REST适配器发送指定格式的登录请求
登录API要求:POST方法、application/x-www-form-urlencoded类型、表单参数obj={序列化JSON对象},同时需Basic认证。
- 创建REST发送通道
- 基础配置:选择POST方法,填写目标登录API URL,在"HTTP Headers"中设置
Content-Type: application/x-www-form-urlencoded。 - Basic认证配置:在通道的"Security"标签下,选择"Basic Authentication",填入API要求的Basic Auth用户名和密码。
- 请求体构造:需要生成
obj=JSON字符串格式的表单数据,推荐用Groovy脚本实现(在消息映射或脚本步骤中):import java.net.URLEncoder import groovy.json.JsonBuilder // 构造登录JSON对象 def loginPayload = [ login: "my_email@company.com", pword: "my_password" ] def loginJson = new JsonBuilder(loginPayload).toString() // URL编码后拼接成表单参数 def formData = "obj=${URLEncoder.encode(loginJson, "UTF-8")}" return formData - 将脚本输出作为REST通道的请求体,确保适配器正确发送符合要求的表单数据。
- 基础配置:选择POST方法,填写目标登录API URL,在"HTTP Headers"中设置
二、获取令牌并在后续API中复用
登录API返回的Token和登录密钥需要传递给后续的文件获取API,可通过SAP PO的动态配置实现跨步骤传递:
解析登录响应提取令牌
在登录请求后的脚本步骤中,解析JSON响应并将令牌存入动态配置:import groovy.json.JsonSlurper import com.sap.aii.mapping.api.* def messageBody = inputStream.text def response = new JsonSlurper().parseText(messageBody) // 提取Token和登录密钥 def token = response.token def loginKey = response.loginKey // 存入动态配置 DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION) DynamicConfigurationKey tokenKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/REST", "AUTH_TOKEN") DynamicConfigurationKey keyKey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/REST", "LOGIN_KEY") conf.put(tokenKey, token) conf.put(keyKey, loginKey)后续API调用时传入令牌
在文件获取的REST发送通道中,根据API要求的传递方式(Header/参数),从动态配置中取出值:- 若需放在请求Header:在通道的"HTTP Headers"中添加自定义Header(如
Authorization: Bearer ${token}),通过动态配置变量引用(格式为${dynamicConfiguration:http://sap.com/xi/XI/System/REST#AUTH_TOKEN})。 - 若需放在请求参数:在URL中拼接参数(如
?token=${token}),同样引用动态配置变量。
- 若需放在请求Header:在通道的"HTTP Headers"中添加自定义Header(如
注意事项
- 确保JSON字符串的URL编码正确,避免特殊字符导致请求解析失败。
- 测试阶段可先用Postman验证登录请求格式,确认能正常获取令牌后再迁移到SAP PO配置。
- 动态配置的命名空间和键名可根据需求自定义,确保后续步骤能正确引用。
内容的提问来源于stack exchange,提问作者user22788171
相关产品推荐
相关产品推荐

