Java 如何从ResourceMapping转发到同一服务器上的新URL?

Java 如何从ResourceMapping转发到同一服务器上的新URL?,java,spring,servlets,portlet,Java,Spring,Servlets,Portlet,我有如下定义的portlet控制器响应映射: @ResourceMapping("create") public String create(ResourceRequest request, ResourceResponse response){ return "test" } 我正在尝试使用以下方式向单独的服务发送新请求: @ResourceMapping("create") public String create(ResourceRequest request, Resour

我有如下定义的portlet控制器响应映射:

@ResourceMapping("create")
public String create(ResourceRequest request, ResourceResponse response){

    return "test"

}
我正在尝试使用以下方式向单独的服务发送新请求:

@ResourceMapping("create")
public String create(ResourceRequest request, ResourceResponse response){

    new HttpGet("/path-to-my-service/myService");

    return "test"

}
没有显示错误,但我认为Get请求没有被正确调用,因为我没有访问权限 指向服务所在的域名。是否可以使用ResourceRequest/ResourceResponse访问此文件? 查看此obj的属性,这些属性似乎不可用。我是否可以尝试调用Get请求

通过提供完整路径,我可以在浏览器上实现这一点:

http://localhost:8080/path-到我的服务/myService
,但我需要从@ResourceMapping中解析服务的域

不显示任何错误

它不应该,这个代码什么都不做

new HttpGet("/path-to-my-service/myService");
我假设您试图使用http客户端调用外部服务,您必须提供完整的http调用代码才能获得它

例如,http客户机4.3

    public static String executeGet(String url) {

        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        String resp = null;  
        try {

            HttpGet httpGet = new HttpGet(url);
            response = httpClient.execute(httpGet);

            int code = response.getStatusLine().getStatusCode();
            if (code == HttpURLConnection.HTTP_OK) {
                resp = EntityUtils.toString(response.getEntity());
            } else {
                // handle wrong response here
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (response != null) {
                close(response);
            }
        }
        return resp;
}
您应该提供此方法的完整url,这意味着您应该知道主机名。如果您知道您的portlet和服务位于同一主机上,您可以从ServletRequest获取主机名,那么每个门户实现都提供了从PorteltRequest获取HttpServletRequest的方法