Как получить Ip-адрес клиента в Java HttpServletRequest
Я пытаюсь разработать веб-приложение Java (сервлет), которое мне нужно получить IP-адрес клиентов.
пожалуйста, не рассматривайте это как дублирующий вопрос, потому что я пробовал все возможные ответы, которые доступны в stackoverflow.
ниже приведен мой код до сих пор:
1)
String ipAddress = request.getRemoteAddr();
в этом случае большая часть Тома я получаю "адрес шлюза по умолчанию" (147.120.1.5). не моя машина ИС адрес(174.120.100.17).
2)
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
в этом случае большая часть Тома я получаю "адрес шлюза по умолчанию" (147.120.1.5). не мой IP-адрес машины (174.120.100.17).
3)
InetAddress IP=InetAddress.getLocalHost();
System.out.println(IP.getHostAddress());
в этом случае я получил IP-адрес сервера(147.120.20.1).
мой IP-адрес в 147.120.100.17.Теперь я не знаю, как получить реальный IP-адрес клиента. Пожалуйста, ответьте.
спасибо много.
3 ответов
это
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
ссылка:http://www.mkyong.com/java/how-to-get-client-ip-address-in-java/
в случае, если вы пытаетесь получить IP-адрес для Dev-среды, вы можете использовать это: -
public String processRegistrationForm(HttpServletRequest request)
{
String appUrl = request.getScheme() + "://"+ request.getLocalAddr();
return appUrl;
}
на request.getLocalAddr()
вернет IP-адрес системы приема запросов.
надеюсь, что это помогает.
import java.net.UnknownHostException;
/**
* Simple Java program to find IP Address of localhost. This program uses
* InetAddress from java.net package to find IP address.
*
*/
public class IPTest {
public static void main(String args[]) throws UnknownHostException {
InetAddress addr = InetAddress.getLocalHost();
//Getting IPAddress of localhost - getHostAddress return IP Address
// in textual format
String ipAddress = addr.getHostAddress();
System.out.println("IP address of localhost from Java Program: " + ipAddress);
//Hostname
String hostname = addr.getHostName();
System.out.println("Name of hostname : " + hostname);
}
}
выход:
IP address of localhost from Java Program: 190.12.209.123
Name of hostname : PCLOND3433