是什么导致了 DestinationAccessException "Failed to get on-premise proxy headers"?

What causes the DestinationAccessException "Failed to get on-premise proxy headers"?

我们正在尝试从我们的 SAP Cloud Platform Java 应用调用 S/4HANA On Premise 系统中的 OData 和 REST 端点。但是,我们尝试使用 SAP CloudSDK 获取相应目的地的 HTTP 客户端

Destination destination = DestinationAccessor.getDestination(destinationName);
HttpClient client = HttpClientAccessor.getHttpClient(destination.asHttp());

异常失败

com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException:
Failed to get on-premise proxy headers.

我们不知道是什么原因造成的。该文本也不是很具体地说明缺少的内容。 "Proxy headers",好的。但它们是什么,我在哪里维护它们,为了什么? None 我们提到的博客 1 2 提到了任何此类内容。

我们的目的地如下所示:

它指向公开 back-end 系统的云连接器:

连接检查成功。

我终于在库cloudplatform-connectivity-scp-cf的classConnectivityService的方法getHeadersForOnPremiseSystem中找到了抛出异常的那段代码,显然无法解决headers 与使用 PrincipalPropagationStrategy 的 XSUAA 服务相关。这让我想知道:据我所知,主要传播是为了前端访问 Fiori 应用程序。但我们只想调用 OData 端点,因此不需要也不想配置它。

我们遗漏了什么或做错了什么?

Florian,你必须用 DefaultErpHttpDestination 来装饰你的目的地

HttpClient client = HttpClientAccessor.getHttpClient(destination.asHttp().decorate(DefaultErpHttpDestination::new));

感谢您的好评,我们将更新有关目标处理和其他 OData 相关主题的文档 here