Мне нужно получить полный URL-адрес с именем хоста или IP-адресом из спокойного запроса, сделанного в мою службу отдыха. Есть ли способ это сделать?
Аналогично InetAddress ip = ip.getHostName(); в яве.
Мне нужно получить полный URL-адрес с именем хоста или IP-адресом из спокойного запроса, сделанного в мою службу отдыха. Есть ли способ это сделать?
Аналогично InetAddress ip = ip.getHostName(); в яве.
С Джерси вы можете сделать следующее
String clientHost = req.getRemoteHost(); // req is HttpServletRequest
String clientAddr = req.getRemoteAddr();
Используя CDI и @Context, аналогично комментарию Ashir Khan выше, 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();
}
Вы можете использовать класс 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
здесь
Когда вы говорите InetAddress ip = ip.getHostName(); вы получите имя хоста машины, на которой работает служба отдыха, чтобы получить имя машины, с которой исходит запрос, вам нужно будет использовать что-то похожее на request.getRemoteHost(); это значение может зависеть от сетевой среды машины, с которой был отправлен запрос.
чтобы получить полный URL, пожалуйста, обратитесь к сообщению ниже. Какой лучший способ получить текущий URL в Spring MVC?