我需要获取包含主机名或IP地址的完整网址,这是来自我的休息服务的休息请求。有什么方法可以做到吗?
与InetAddress相似ip = ip.getHostName();在java。
答案 0 :(得分:0)
使用Jersey可以执行以下操作
String clientHost = req.getRemoteHost(); // req is HttpServletRequest
String clientAddr = req.getRemoteAddr();
答案 1 :(得分:0)
当你说InetAddress ip = ip.getHostName();您将获得运行其他服务的计算机的主机名,以获取发出请求的计算机的名称,您将需要使用类似于request.getRemoteHost();该值可能取决于发起请求的机器的网络环境。
获取完整网址请参阅以下帖子。 What's the best way to get the current URL in Spring MVC?
答案 2 :(得分:0)
使用 CDI 和 @Context ,类似于Ashir Khan above的评论,可以制作requestContext或部分请求上下文在运行时可用。许多类型可以通过 @Context 注释绑定并由容器注入,但最好是:
听起来很多,但就像阿什尔的代码一样简单(修改):
@GET
@Path("/test")
// Look Ma, no hands!
public Response test(@Context javax.ws.rs.core.UriInfo uriInfo) {
return Response.status(Status.OK).entity(uriInfo.getBaseUri()).build();
}
答案 3 :(得分:0)
您可以使用UriInfo
类并使用@Context
批注将其绑定,然后在每个请求处都可以访问URI信息,例如主机名,端口,请求路径等。
这里是一个例子-
@POST
@Path("/test")
public Response uriTest(@Context UriInfo uriInfo){ //helps you get all URI related information.
System.out.println(uriInfo.getBaseUri().getHost());
System.out.println(uriInfo.getBaseUri().getPort());
return Response.ok(null).build();
}
您可以了解有关URIInfo
here