Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2012, 11:22
Avatar de arrakshe
arrakshe
 
Fecha de Ingreso: septiembre-2012
Mensajes: 19
Antigüedad: 11 años, 7 meses
Puntos: 2
Información Obtener ip cliente publica/privada SmartGwt+Gwt+JavaScript(Resuelto)

Buenas, quiero compartir con ustedes una forma de obtener la ip publica/privada del cliente desde smartGwt/Gwt y desde javaScript, dado que un ida de estos me toco implementarlo en mi proyecto, aclaro que esto es el resultado de mis plegarias a san Google , por lo tanto la solución no es 100% propia y la verdad ya ni me acuerdo de donde lo saque pero igual quiero compartirla con ustedes.

El contexto es el siguiente, tenemos una aplicación que trabaja con SmartGwt o Gwt y queremos obtener la ip del cliente sin tener que molestar al servidor(por determinada razón o limitación) entonces la solución es la siguiente, hay dos formas:
1. Desde SmartGwt/Gwt directamente utilizando la siguiente instrucción:
Código:
String cadenaIp = GWT.getHostPageBaseURL();
la cual nos devuelve una cadena que contiene la ip local pero también trae el alias (si existe) y otros datos, por consiguiente luego habría que descomponerla pero eso es lo de menos, el resultado obtenido en mi caso es asi: http://127.0.0.1/debug/

2. La otra forma de hacerlo es utilizando JSNI(JavaScript Native Interface), de esta forma definimos una funcion javaScript en el archivo html de nuestra aplicación y luego la llamamos desde SmartGwt/Gwt mediante un metodo, esto lo podríamos hacer mas o menos asi:
Llamada desde smartGwt/Gwt:
Código:
String str_User_ip = getIP();
Maetodo SmartGwt/Gwt:
Código:
public native String getIP() /*-{
		return $wnd.myIP();
	}-*/;
Funcion JavaScript:
Código:


Código Javascript:
Ver original
  1. <script type="text/javascript" language="javascript">
  2.        //Recupera ip privada
  3.        function myIP() {
  4.            
  5.             var cadenaIp = java.net.InetAddress.getLocalHost();
  6.             var ip = cadenaIp.getHostAddress();
  7.             return ip
  8.         }
  9.        
  10.        
  11.         //Recupera ip publica
  12.         function myIP() {
  13.             if (window.XMLHttpRequest)
  14.                 xmlhttp = new XMLHttpRequest();
  15.             else
  16.                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  17.  
  18.             xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
  19.             xmlhttp.send();
  20.  
  21.             hostipInfo = xmlhttp.responseText.split("\n");
  22.  
  23.             for (i=0; hostipInfo.length >= i; i++) {
  24.                 ipAddress = hostipInfo[i].split(":");
  25.             if ( ipAddress[0] == "IP" )
  26.                 return ipAddress[1];
  27.             }
  28.  
  29.             return false;
  30.        
  31.        
  32.        
  33.     </script>
Dejo las dos funciones para quien necesite la publica o la privada (recuerden no colocar las 2 con el mismo nombre o comentar una de las 2 cuando vayan a usar cualquiera), como les dije esto me funciono a mi con smartGwt/Gwt + eclipse y simplemente quería compartirlo, no se si el post encaja acá o si ya existen otros con información similar así que siéntanse libres de eliminarlo, molerlo etc etc en caso de ser necesario.