将FluentHelperRead / Count与过滤器一起使用时,是否可以跳过Odata元数据验证?

问题描述

我正在使用Java的sap-cloud-sdk来获取(也使用过滤器)SAP C4C票证。 由于元数据验证失败,我的请求无法执行(请参阅下面的stacktrace)。由于此元数据超出了我的控制范围,并且我甚至对所有数据都不感兴趣,因此我希望选择跳过验证(类似于缓存元数据的选项)。我有什么办法吗?

   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer.validateRelationship(XmlMetadataDeserializer.java:1483) ~[odata-v2-lib-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer.validate(XmlMetadataDeserializer.java:1576) ~[odata-v2-lib-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at org.apache.olingo.odata2.client.core.ep.deserializer.XmlMetadataDeserializer.readMetadata(XmlMetadataDeserializer.java:181) ~[odata-v2-lib-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at org.apache.olingo.odata2.client.core.ODataClientImpl.readMetadata(ODataClientImpl.java:100) ~[odata-v2-lib-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.odatav2.connectivity.cache.Metadata.GuavaMetadataCache.getEdm(GuavaMetadataCache.java:139) ~[odatav2-connectivity-sdk3-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.odatav2.connectivity.ODataQuery.loadMetadata(ODataQuery.java:480) [odatav2-connectivity-sdk3-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.odatav2.connectivity.ODataQuery.loadEntriesFromDestination(ODataQuery.java:326) [odatav2-connectivity-sdk3-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.odatav2.connectivity.ODataQuery.internalExecute(ODataQuery.java:265) [odatav2-connectivity-sdk3-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.odatav2.connectivity.ODataQuery.execute(ODataQuery.java:162) [odatav2-connectivity-sdk3-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.odatav2.connectivity.ODataQuery.execute(ODataQuery.java:146) [odatav2-connectivity-sdk3-1.39.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.cloud.sdk.datamodel.odata.helper.FluentHelperCount.execute(FluentHelperCount.java:45) [odata-core-3.22.0.jar:na]
   2020-09-23T22:26:01.97+0300 [APP/PROC/WEB/0] OUT at com.sap.chatbot.service.core.DefaultTicketService.getTotalNumberOfTickets(DefaultTicketService.java:222) [classes/:na]```

Thank you

解决方法

从堆栈跟踪中可以得出,您使用的是SAP Cloud SDK 3.22.0,并且已为C4C OData API生成了自定义VDM。让我建议您始终保持最新的Cloud SDK版本。请参阅我们的release notes以获取更多参考。

基于提供的信息,无法确切说明为什么元数据验证失败。但是,正如您所指出的,解决方案可能是完全阻止元数据访问。

我建议试用SAP Cloud SDk的改进的OData客户端。这个新的OData客户端库不再导致元数据访问Here是如何调整代码库以利用该新OData客户端的方法。

,

索琳娜(Sorina)

今天幸运的是,我们发布了改进的OData v2客户端的新版本,该版本应解决元数据问题,因为它不依赖于先前客户端版本所使用的依赖项。我已经可以看到它已上传到mvn central

请检查我们的documentation以便轻松迁移。

我希望能解决您的问题。如果无法再次与我们联系以寻求快速帮助。