Hola,
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;
    }
Posicionar en mapa y obtener en mapa:

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;
    }
Ejemplo:

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);
Imagen:
Imagen
Responder

Volver a “Fuentes”