Rest-как получить IP адрес абонента
Я пишу веб-сервис Java Rest и мне нужен IP-адрес вызывающего абонента. Я думал, что видел это в печенье однажды, но теперь я этого не вижу. Есть ли постоянное место для получения этой информации?
Я видел один пример использования "OperationalContext", чтобы получить его, но это было не в java.
4 ответа:
Я думаю, что вы можете получить IP через объект запроса.
Если я не ошибаюсь,
request.getRemoteAddr()
или около того.
Введите HttpServletRequest в вашу службу Rest как таковую:
import javax.servlet.http.HttpServletRequest; @GET @Path("/yourservice") @Produces("text/xml") public String activate(@Context HttpServletRequest requestContext,@Context SecurityContext context){ String ipAddressRequestCameFrom = requestContext.getRemoteAddr(); //Also if security is enabled Principal principal = context.getUserPrincipal(); String userName = principal.getName(); }
Вы могли бы сделать что-то вроде этого:
@WebService public class YourService { @Resource WebServiceContext webServiceContext; @WebMethod public String myMethod() { MessageContext messageContext = webServiceContext.getMessageContext(); HttpServletRequest request = (HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST); String callerIpAddress = request.getRemoteAddr(); System.out.println("Caller IP = " + callerIpAddress); } }