Android получает внешний IP

1

Я разрабатываю приложение в Android 2.1, и я хочу отобразить внешний IP-адрес. Как я могу это сделать? Спасибо заранее.

  • 0
    Что вы считаете «внешним» IP-адресом?
Теги:
external
ip

4 ответа

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
    whatismyip.akamai.com здорово: но используйте этот URL с AsyncTask.
  • 0
    @TusharPandey, почему whatismyip.akamai.com в чем проблема с ifcfg.me/ip?
Показать ещё 2 комментария
2

http://api.externalip.net/ip вернет ваш ip в простой формат api

Вы можете узнать больше о том, как получить внешний ip здесь: http://www.externalip.net/api

1

Я не думаю, что есть способ сделать это программно, но вы можете вызвать сайт, например http://www.whatismyip.com/, а затем удалить из IP-адреса. Возможно, вам захочется найти сайт, предлагающий API и поддерживающий сторонние вызовы.

-3

Взгляните на этот фрагмент кода:

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
    Получает локальный IP, а не внешний IP

Ещё вопросы

Сообщество Overcoder
Наверх
Меню