Java 如何从ResourceMapping转发到同一服务器上的新URL?
我有如下定义的portlet控制器响应映射: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
@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的方法