第一次尝试:
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
URL是一个硬编码的字符串。这样,应用程序就可以使用Tomcat服务器在本地工作,但不能在SAP Cloud Platform上运行时工作。在SCP上将产生Caused by: java.net.ConnectException: Connection timed out (Connection timed out) (local port 53603 to address 0.0.0.0, remote port 443 to address xxx.xxx.xxx.xxx
。
第二次尝试:
Context ctx = new InitialContext();
HttpDestination destination = (HttpDestination) ctx.lookup("java:comp/env/myDestination");
HttpClient client = destination.createHttpClient();
使用web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>myApp</display-name>
<resource-ref>
<res-ref-name>myDestination</res-ref-name>
<res-type>com.sap.core.connectivity.api.http.HttpDestination</res-type>
</resource-ref>
</web-app>
在这种情况下,import com.sap.core.connectivity.api.http.HttpDestination;
cannot be resolved and when I run in ton SCP it shows similar errors:
with root cause java.lang.Error: Unresolved compilation problems:
HttpDestination cannot be resolved to a type
HttpDestination cannot be resolved to a type
FYI-在Eclipse Oxygen中使用neo-java-web-sdk-3.66.4.1。
您不能在Servlet中为HTTPClient使用硬编码的URL吗?
如何解决com.sap.core.connectivity.api.http.HttpDestination
参考问题?
如果代码正在使用目标,您还能在本地测试应用程序吗?
答案 0 :(得分:1)
我强烈建议将SAP S/4HANA Cloud SDK用于此类任务。它是通过为所有Cloud Platform机制提供易于使用的机制而开发的,可简化SAP Cloud Platform应用程序的开发。
关于手头的任务,您可以像这样使用DestinationAccessor
类:
DestinationAccessor.getDestination("MyDestinationName");
鉴于您已经在云计算座舱中的空间中配置了一个目的地,这将解析该目的地并将其传递给代码的其他部分。这适用于Neo和Cloud Foundry。
如果这听起来可以解决您的问题,我建议您检出this blog post series来开始使用。
或者,您也可以简单地将以下依赖项添加到项目中,以开始测试SDK:
<dependency>
<groupId>com.sap.cloud.s4hana.cloudplatform</groupId>
<artifactId>scp-neo</artifactId>
<version>2.7.0</version>
</dependency>
对于Cloud Foundry,请使用scp-cf
而不是scp-neo
。
希望这会有所帮助!