我正在尝试连接到运行我的 webapp 的同一台服务器上的 _Spring RESTful 服务_。
我想使用“相对”路径,因为它可以安装在多个环境(本地主机、测试、生产)上,但我收到错误消息: URI is not absolute
。
如何调用在同一台服务器上的另一个 webapp 上运行的服务?
我的代码如下:
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());
}
谢谢。
更新:
我通过从 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");
}
原文由 Alessandro 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不能像第一个片段中的代码那样做; URI 必须完全标识您要访问的资源。你的第二个片段几乎是你可以做你想做的事情的唯一方法。可能还有其他方法,但我想不出任何办法。
当然,使用您的方法,您是 在代码 中指定您的系统架构和部署模型,这几乎不是一个好主意。