我正在尝试在运行我的Web应用程序的同一服务器上连接到Spring RESTful服务。
我想使用“相对”路径,因为它可以安装在多个环境(本地主机,测试,生产环境)中,但出现错误消息:URI is not absolute。
如何调用在同一服务器上的另一个Web应用程序上运行的服务?
我的代码如下:
final RestTemplate restTemplate = new RestTemplate();
URI uri;
try {
String url = "app2/myservice?par=1";
uri = new URI(url);
String result = restTemplate.getForObject(uri, String.class);
System.out.println(result);
} catch (URISyntaxException e) {
logger.error(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
更新:
我通过从那里获取主机,端口等来解决它request,这是一个正确而优雅的解决方案吗?这是我实际的简化代码:
String scheme = request.getScheme();
String userInfo = request.getRemoteUser();
String host = request.getLocalAddr();
int port = request.getLocalPort();
String path = "/app2/myservice";
String query = "par=1";
URI uri = new URI(scheme, userInfo, host, port, path, query, null);
boolean isOK = restTemplate.getForObject(uri, Boolean.class);
if (isOK) {
System.out.println("Is OK");
}
Run Code Online (Sandbox Code Playgroud)
app2/myservice?par=1如果您的服务在另一个 Web 应用程序或同一服务器上运行,则您的URL不完整。
您必须通过提供基本 URL 来完成路径,localhost:8080/yourApp/app2/myservice?par=1然后这些东西可能对您有用。
此外,检查包访问。
您不能将其作为第一个片段中的代码来执行;URI 必须完全标识您尝试访问的资源。您的第二个片段几乎是您可以做您想做的事情的唯一方法。可能还有其他方法,但我想不出任何方法。
当然,通过您的方法,您将在代码中规定您的系统架构和部署模型,这几乎从来都不是一个好主意。
| 归档时间: |
|
| 查看次数: |
18484 次 |
| 最近记录: |