Как я могу получить 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 для получения дополнительной информации.

Другие вопросы по тегам