有个需求,需要得知网站访问者的大概地理位置,经纬度。应该怎么办啊,求给点思路谢谢,
百度了半天,也找不到获取公网ip的办法
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
//获得客户端真实IP地址的方法二:
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
public String getAddressByIP(String strIP)
{
try
{
URL url = new URL( "http://ip.qq.com/cgi-bin/searchip?searchip1=" + strIP);
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "GBK"));
String line = null;
StringBuffer result = new StringBuffer();
while((line = reader.readLine()) != null)
{
result.append(line);
}
reader.close();
strIP = result.substring(result.indexOf( "该IP所在地为:" ));
strIP = strIP.substring(strIP.indexOf( ":") + 1);
String province = strIP.substring(6, strIP.indexOf("省"));
String city = strIP.substring(strIP.indexOf("省") + 1, strIP.indexOf("市"));
return strIP+province+city;
}
catch( IOException e)
{
return "读取失败";
}
}
127.0.0.1
127.0.0.1
IP地址:Lenovo-PC/172.27.35.1
这几个方法我都试了,都无法获取公网ip,
获得客户端真实IP地址的方法二
这个办法是可以的。但是前提是你必须把你的网站部署到服务器上才能看到效果。如果你在局域网甚至本机上访问,获得的是内网或者本机的ip。