无法使用SDK从S / 4系统检索数据以进行服务开发

时间:2018-03-18 06:05:32

标签: java sap s4sdk

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

这是我的问题:当我尝试从我的Olingo服务调用我的网关OData服务时,它给了我一个错误"在JSON"中找不到错误字段。经过一些尝试后,我找到了堆栈跟踪,但它并没有真正帮助我,因为它只是说元数据请求失败没有理由。这是我的堆栈跟踪: stack trace from SCP logs 任何人都可以告诉我这可能是什么原因(凭证和URL被双重检查)和/或帮助我解决这个问题?

提前多多感谢!

修改

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

2 个答案:

答案 0 :(得分:7)

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

这似乎与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

enter image description here

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

在SAP Cloud Platform上连接到S / 4HANA云系统时,您不应该遇到此问题,因为默认信任库已包含相关条目。在其他情况下,要解决此类问题,您必须add the certificate to your local trust store

答案 1 :(得分:4)

另一种选择是您尝试在ODataQueryBuilder上注册自定义错误处理程序:

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

builder.build().execute();

这可以让您更好地了解潜在的错误。