2017-12-14 12 views
0

Ich habe nicht die richtige Lösung gefunden. Der folgende Code gibt mir lokale IP-Adresse (wenn ich an Wifi angeschlossen habe, gibt es IP-Adresse wie 192.168.0.x), aber ich möchte öffentliche IP-Adresse (das gleiche wie wenn ich in Google "was ist meine IP")Wie programmgesteuert eine öffentliche IP-Adresse erhalten?

suchen
public static String getLocalIpAddress() { 
try { 
    for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
     NetworkInterface intf = en.nextElement(); 
     for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
      InetAddress inetAddress = enumIpAddr.nextElement(); 
      if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { 
       return inetAddress.getHostAddress(); 
      } 
     } 
    } 
} catch (SocketException ex) { 
    ex.printStackTrace(); 
} 
return null; 
} 

ODER

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE); 
    String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress()); 

Kann jemand helfen? Vielen Dank!

+1

Mögliche Duplikate von [Wie bekomme ich IP-Adresse des Geräts von Code?] (Https: // stackoverflow.com/questions/6064510/how-to-get-IP-Adresse-des-Geräts-aus-Code) –

Antwort

3

Schritt 1: Erstellen Sie einen Webdienst, der die IP-Adresse

Schritt # des Autors ist den Wert 2: Rufen Sie, dass die Web-Service von Ihrer App.

Ein Gerät kennt seine öffentliche IP-Adresse nicht (es sei denn, das Gerät war ernsthaft falsch konfiguriert).

3

Sie können die WS https://api.whatismyip.com/ip.php von whatismyip.com verwenden: Dies würde nur Ihre IP-Adresse im einfachen Text ausgeben. (Keine Eingabe erforderlich, Ausgang ist optional)

Sie müssen Gold-Stufe-Mitglied sein, um die API für den Zugriff auf

aktualisiert Antwort

Sie können Nutzung des Web-Service von ipify.org

machen

Lesen Sie die Dokumentation here

Verwenden Sie https://api.ipify.org/?format=json WS, um die öffentliche IP-Adresse des Geräts zu erhalten. Dies würde Ihre IP-Adresse im JSON-Format ausgeben.

sollten Sie verwenden ipify weil:

  • Sie es ohne Limit verwenden können (auch wenn Sie Millionen von Anfragen pro Minute tun).
  • Es ist immer online und verfügbar, und seine Infrastruktur wird von Heroku betrieben, was bedeutet, dass egal ob der Server mit der API stirbt, oder wenn es einen enormen Tornado gibt, der die Hälfte der Ostküste zerstört, wird ipify noch laufen!
  • Es funktioniert tadellos mit IPv4- und IPv6-Adressen, also egal, welche Art von Technologie Sie verwenden, wird es keine Probleme geben.

....................

....................

+0

'Verwenden Sie http://api.whatismyip.com/ip.php WS, um Gerät öffentlichen IP-Adresse zu bekommen Das funktioniert nicht. Hast du es vor dem Posten versucht? – greenapps

+0

*** Sie müssen Mitglied des Gold-Levels sein, um auf die API zuzugreifen ***. Sind Sie ein Gold Level Mitglied von WhatIsMyIP.com? –

+0

Es macht wenig Sinn, einen Server zu verwenden, auf dem Sie Mitglied sein müssen. Und warum hast du es nicht gleich gesagt? – greenapps

-1

Rufen Sie einen Server wie https://whatismyipaddress.com oder http://howtofindmyipaddress.com/ an.

Wenn Sie die Seitenquelle haben, dann analysieren Sie die IP-Adresse.

Es gibt andere Server, die nur Ihre IP-Adresse zurückgeben. Nicht eine ganze HTML-Seite wie oben zwei. Aber ich habe vergessen, welche ...

+0

Stellen Sie sicher, dass in Ihrer Datenschutzerklärung darauf hingewiesen wird, dass Sie diese Anforderungen an den Webdienst von jemand anderem richten und nicht an einen eigenen. – CommonsWare

Verwandte Themen