Как я могу получить IP-адрес из ServletRequest, а не HTTPServletRequest?
Я пытаюсь найти метод Java, который бы получил ServletRequest и находит IP-адрес для этого запроса. Что-то вроде этого метода, который я нашел, но получил бы ServletRequest вместо HTTPServletRequest:
2 ответа
Решение
Я бы проверил, является ли запрос HTTP-запросом, если это так, используйте метод, предложенный в другом вопросе. В противном случае, я бы доверял методу getRemoteAddr()
слепо.
if (request instanceof HTTPServletRequest) {
HTTPServletRequest httpRequest = (HTTPServletRequest) request;
// read X-Forwarded-For header, etc. etc.
} else {
ip = request.getRemoteAddr();
}
ServletRequest также предоставляет метод java.lang.String getRemoteAddr()
см. https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html для получения дополнительной информации.