我正在将IP地址转换为相应的号码。现在我想知道位置细节,即长和纬度,时区等。在Java中是否可行。我是否必须为数据库使用一些外部jar?
答案 0 :(得分:2)
IP地址本身没有位置信息。但是,存在具有此映射的许多数据库/服务。
有关多种不同选项,请参阅this blog entry。为此可以连接许多API和数据库,您可以选择在本地下载此类信息以避免远程查找。
答案 1 :(得分:1)
因此,正如其他人正确指出的那样,IP地址不包含任何关于位置的“元数据”。您需要依靠第三方获取此信息,自行检索此信息,或者不使用它。编写库来抓取这些信息应该可以用Java编写。
答案 2 :(得分:1)
ipAddress = request.getRemoteAddr();
GeoLocation gl = new GeoLocation();
gl.GetGeoLocationByIP(ipAddress);
String country = gl.Country;
答案 3 :(得分:1)
要从IP地址获取位置,您必须购买IP数据库 他们将定期更新IP表。
但是,如果您愿意,您可以从请求标题中获取位置详细信息,即城市,地区,国家/地区,经度,纬度。
仅适用于GAE用户。
详情请见 GAE ReleaseNotes
public static HashMap<String, Object> getLocationDetails(HttpServletRequest request)
{
HashMap<String, Object> locationMap = null;
String country = "",city="",region="",latitude="",longitude="",temp="",state="",title="",address="",zip="";
boolean primary = true;
try
{
locationMap = new HashMap<String, Object>();
country = request.getHeader("X-AppEngine-Country");
region = request.getHeader("X-AppEngine-Region");
city = request.getHeader("X-AppEngine-City");
temp = request.getHeader("X-AppEngine-CityLatLong");
latitude = (temp.split(","))[0];
longitude = (temp.split(","))[1];
log.info("country>>"+country+"region>>"+region+"city>>"+city+"temp>>"+temp+"latitude>>"+latitude+"longitude>>"+longitude);
locationMap.put("city" , city);
locationMap.put("state" , region);
locationMap.put("country" , country);
locationMap.put("latitude" , latitude);
locationMap.put("longitude" , longitude);
log.info("locationMap==>"+locationMap);
}catch (Exception e)
{
log.log(Level.SEVERE,"Exception while getting location"+e.getMessage(),e);
}
return locationMap;
}
答案 4 :(得分:0)
您可以获得服务提供商的地址。不是电话的所有者。
如果您使用启用了GPS的Android。那么你可以得到你的确切位置。 代码见下面的链接。
What is the simplest and most robust way to get the user's current location on Android?
答案 5 :(得分:0)
您可以使用我的API查找此信息https://ipinfo.io。如果您没有通过IP地址,它会为您提供您自己的详细信息,或者您可以传递IP地址以获取该地址的详细信息:
$ curl ipinfo.io/24.6.61.239
{
"ip": "24.6.61.239",
"hostname": "c-24-6-61-239.hsd1.ca.comcast.net",
"city": "Mountain View",
"region": "California",
"country": "US",
"loc": "37.3845,-122.0881",
"org": "AS7922 Comcast Cable Communications, LLC",
"postal": "94040"
}
有关详细信息,请参阅https://ipinfo.io/developers。