2011-05-20 6 views
1

Je développe une application dans Android 2.1 et je veux afficher l'adresse IP externe. Comment pourrais-je faire ça? Merci d'avance.Android obtenir IP externe

+0

Que considérez-vous comme l'adresse IP "externe"? – Squonk

Répondre

14
public void getCurrentIP() { 
    ip.setText("Please wait..."); 
    try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpGet httpget = new HttpGet("http://ifcfg.me/ip"); 
      // HttpGet httpget = new HttpGet("http://ipecho.net/plain"); 
      HttpResponse response; 

      response = httpclient.execute(httpget); 

      //Log.i("externalip",response.getStatusLine().toString()); 

      HttpEntity entity = response.getEntity(); 
      if (entity != null) { 
        long len = entity.getContentLength(); 
        if (len != -1 && len < 1024) { 
          String str=EntityUtils.toString(entity); 
          //Log.i("externalip",str); 
       ip.setText(str); 
        } else { 
          ip.setText("Response too long or error."); 
          //debug 
          //ip.setText("Response too long or error: "+EntityUtils.toString(entity)); 
          //Log.i("externalip",EntityUtils.toString(entity)); 
        }    
      } else { 
        ip.setText("Null:"+response.getStatusLine().toString()); 
      } 

    } 
    catch (Exception e) 
    { 
     ip.setText("Error"); 
    } 

} 
+1

http://whatismyip.akamai.com/ super: mais utilisez cette URL avec AsyncTask. –

+0

@TusharPandey pourquoi whatismyip.akamai.com quel problème avec http://ifcfg.me/ip – wadali

+1

si vous voulez des données json https://ifcfg.me/json – wadali

1

Je ne pense pas qu'il existe un moyen de le faire par programmation, mais vous pouvez appeler un site comme http://www.whatismyip.com/ et puis dépouiller l'adresse IP de la page. Vous souhaiterez peut-être trouver un site proposant une API et prenant en charge les appels tiers.

-2

Jetez un oeil à cet extrait de code:

String ipAddress = null; 
    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()) { 
        ipAddress = inetAddress.getHostAddress().toString(); 
       } 
      } 
     } 
    } catch (SocketException ex) { 
     ex.printStackTrace(); 
    } 

    Log.e("IP ADDRESS:", ipAddress); 
+0

Obtient IP local non IP externe – inVINCEable