1

我正在使用 Olingo 构建 OData v2 服务,该服务部分通过自定义网关 OData 服务从 S/4 系统获取数据,部分来自 Cloud Platform Neo 并将两者结合起来。为此,我使用 S/4 Cloud SDK ( https://help.sap.com/viewer/p/SDK_FOR_SERVICE_DEVELOPMENT ) 中包含的 SDK 进行服务开发。

这是我的问题:尝试从我的 Olingo 服务调用我的网关 OData 服务时,它给了我一个错误“在 JSON 中找不到错误字段”。经过一些尝试,我找到了堆栈跟踪,但它也没有真正帮助我,因为它只是说元数据请求失败,没有原因。这是我的堆栈跟踪: 来自 SCP 日志的堆栈跟踪 谁能告诉我这可能是什么原因(凭据和 URL 被仔细检查)和/或帮助我解决这个问题?

提前非常感谢!

编辑

该问题似乎与目标配置有关。我尝试了一个 HTTP 目标而不是 HTTPS,现在它正在工作......我仍然想让它也能在 HTTPS 上工作。

4

2 回答 2

1

注意:此答案仅适用于 S/4HANA Cloud 系统。

这似乎与 SSL 证书验证有关。您的 Java 信任库可能缺少相关的服务器证书。您可以尝试禁用服务器证书的验证,如下所示:

  • 要手动覆盖信任链,您可以在目标配置上设置一个特殊标志。为避免本地 Neo 部署环境中的不受信任证书出现任何进一步的问题,请更改TrustAll目标配置文件中的标志./config_master/service.destinations/destinations/ErpQueryEndpoint
TrustAll=TRUE
  • 如果您在 Cloud Foundry 部署环境中遇到同样的问题并且您正在使用环境变量方法,请调整目标环境变量以另外包含属性映射:
[{"name": "ErpQueryEndpoint", "properties": [{"key": "TrustAll", "value": "true"}], "url": "https://my-url", "username": "USER", "password": "PASSWORD"}]
  • 如果您已部署应用程序并在 Neo 或 Cloud Foundry 环境中使用目标服务,请在 Cloud Platform 主控室中向您的目标添加一个新的附加属性。输入TrustAll第一个输入(下拉)字段和TRUE第二个字段:

在此处输入图像描述

请注意,这只能用于测试目的,因为它会禁用服务器证书的验证。它永远不应该在生产中使用

在 SAP Cloud Platform 上连接到 S/4HANA Cloud 系统时,您应该不会遇到此问题,因为默认信任库已包含相关条目。在其他情况下,要解决此类问题,您必须将证书添加到本地信任库

于 2018-03-19T13:47:23.437 回答
1

另一种选择是您尝试在以下位置注册自定义错误处理程序ODataQueryBuilder

ODataQueryBuilder builder = 
    ODataQueryBuilder
    .withEntity(...)
    .errorHandler(new ODataVdmErrorResultHandler());

builder.build().execute();

这应该让您更好地了解潜在的错误。

于 2018-03-20T09:38:47.283 回答