OData适配器请求有效负载包含元数据作为SCPI中的字段

2020-08-19 04:33发布

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

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


嗨,

我正在研究OData在接收方的情况。 OData接收包含元数据作为字段的JSON请求,并且他们不希望站在自己一边。 请帮助我删除此元数据字段,因为系统无法处理有效载荷。

我想知道SCPI OData Adapter是否发送此元数据字段,如何禁用。

注意:-此元数据字段不存在于edmx文件中,也不是通过映射生成的。

jsondata-li.jpg (953.8 kB)

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

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


嗨,

我正在研究OData在接收方的情况。 OData接收包含元数据作为字段的JSON请求,并且他们不希望站在自己一边。 请帮助我删除此元数据字段,因为系统无法处理有效载荷。

我想知道SCPI OData Adapter是否发送此元数据字段,如何禁用。

注意:-此元数据字段不存在于edmx文件中,也不是通过映射生成的。

jsondata-li.jpg (953.8 kB)
付费偷看设置
发送
7条回答
愤怒的猪头君
1楼-- · 2020-08-19 04:48

你好Neeraj,

用下面的代码添加一个脚本步骤就足够了。

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;
 导入groovy.json.JsonSlurper;
 导入groovy.json.JsonOutput;
 导入groovy.json。*;


 def消息processData(消息消息)
  {

     def body = message.getBody();
    
     def jsonSlurper =新的JsonSlurper();
     def list = jsonSlurper.parseText(body);
     list.catalogVersion.remove('__ metadata');
     list.catalogVersion.catalog.remove('__ metadata');
     list.fuelType.remove('__ metadata');
     list.transmission.remove('__ metadata');
 
     def jsonOP = JsonOutput.toJson(列表)
     message.setBody(jsonOP);
   
     返回消息;
 }
 

问候,

Sriprasad Shivaram Bhat

clever101
2楼-- · 2020-08-19 04:51

嗨,Sirprasad,

感谢您的回复。 该集成流程是将SFTP(CSV文件)集成到SAP Hybris(Odata API)。 这是一个异步方案。 Odata适配器的输入是 target-xml.txt 。 从XML文件中可以看出,没有" _metadata"被发送到Odata适配器。 但是,Hybris团队告诉我们,他们正在为每种实体类型接收JSON中的" _metadata"字段。 请帮助澄清以下两个查询。

1。 OData适配器是否有可能在JSON请求中添加" _metadata"字段?

2。 如果是,是否有任何适配器配置需要删除?

我们对从Odata适配器创建的json消息不可见。

同时,我们通过添加请求-答复步骤来查看响应,从而完成了POC。 以下提供的是Hybris响应负载的摘录:

对于Odata适配器中的Content-Type JSON:

"在处理请求时发生错误。此错误的最可能的原因是OData请求有效载荷的格式。请验证请求有效载荷格式是否与您要创建的实体的EDMX元数据相对应。"

对于Odata适配器中的Content-Type ATOM:

"(runtime_error)在处理集成对象期间遇到错误。"

此致

Neeraj

宇峰Kouji
3楼-- · 2020-08-19 05:04

嗨Neeraj,

不幸的是,您不能从OData接收器适配器禁用__metadata。 OData接收器将XML用作输入,并在内部使用olingo库来生成atom + xml或json有效负载。 基础库添加了此标记,作为集成流程开发人员,您不能禁用此标记。

BR
Saranya

风早神人
4楼-- · 2020-08-19 05:03

嗨,Sirprasad,

请找到有效负载结构 sample-payload.txt 。 首先,此元数据字段是否由OData适配器发送?

此致

Neeraj

木偶小白
5楼-- · 2020-08-19 05:00

你好Neeraj,

请在删除__metadata字段后提供所需的预期结构,以便社区成员轻松快速地提供解决方案。/p>

致谢

Sriprasad Shivaram Bhat

我是小鹏鹏啊
6楼-- · 2020-08-19 05:03

你好Neeraj

由于Saranya已经证实了odata适配器的行为,所以我认为 您应该手动删除元数据标记,并使用http适配器发布数据。

问候,

Sriprasad shivaram Bhat

一周热门 更多>