con los siguientes métodos podrás obtener la IP pública del PC donde se ha ejecutado el código y posicionar en un mapa la situación (aproximada) de la IP.
Código:
Obtener IP pública:
Código: Seleccionar todo
private static String getPublicIpAddress() {
String r = "";
try {
URL myIP = new URL("http://api.externalip.net/ip/");
BufferedReader in = new BufferedReader(new InputStreamReader(myIP.openStream()));
r = in.readLine();
} catch (Exception ex) {
System.out.println("[getPublicIpAddress] Hubo un error: " + ex.getMessage());
}
return r;
}
Código: Seleccionar todo
private static Image getMapImage(String latitude, String longitude, int width, int height) {
Image r = null;
try {
String geoUrl = "http://maps.google.com/staticmap?center=" + latitude + "," + longitude + "&zoom=18&size=" + width + "x" + height + "&maptype=satellite&key=ABQIAAAAgb5KEVTm54vkPcAkU9xOvBR30EG5jFWfUzfYJTWEkWk2p04CHxTGDNV791-cU95kOnweeZ0SsURYSA&format=jpg";
r = ImageIO.read(new URL(geoUrl));
} catch (IOException ex) {
System.out.println("[getMapImage] Hubo un error: " + ex.getMessage());
}
return r;
}
Código: Seleccionar todo
String ip = getPublicIpAddress();
System.out.println("Mi IP pública es: " + ip);
URL xmlUrl = new URL("http://freegeoip.net/xml/" + ip);
URLConnection conn = xmlUrl.openConnection();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(conn.getInputStream());
String[] strXml = {"CountryCode", "CountryName", "RegionCode", "RegionName", "City", "ZipCode", "Latitude", "Longitude", "MetroCode", "AreaCode"};
for (String str : strXml) {
System.out.println("-" + str + ": " + doc.getElementsByTagName(str).item(0).getTextContent());
}
String lat = doc.getElementsByTagName("Latitude").item(0).getTextContent();
String lon = doc.getElementsByTagName("Longitude").item(0).getTextContent();
Image img = getMapImage(lat, lon, 100, 100);