IPify es un servicio web, API, que promete estar siempre ahí para atender nuestras consultas e indicarnos cual es la dirección pública (o externa) de nuestra conexión a Internet. De hecho, tan escueta y necesaria información puede ser devuelta como texto, en formato JSON o bien en formato XML, a elegir.
Descarga la clase IPify para tus proyectos Multiplataforma de Xojo desde GitHub, desde aquí!
Son muchas las ocasiones en las que precisamos saber cual es la dirección IP pública, o externa, empleada por nuestra aplicación con diferentes propósitos; y si bien existen múltiples sitios web que nos proporcionan dicha información, lo cierto es que no he encontrado nada más rápido y simple que IPify, además de su notable disponibilidad al estar publicada en Heroku. Esto significa que incluso si se cae medio Internet el servicio continuará estando disponible.
Sin ir más lejos, recientemente he tenido que implementar para un cliente este dato, de modo que pueda saber en cualquier momento la dirección IP que se está utilizando.
Y si bien la forma más sencilla de utilizar IPify es mediante el siguiente código:
Dim request as New HTTPSecureSocket
Dim s as String = request.get("https://api.ipify.org",10)
He creado una clase para Xojo que además de esa información puntual también proporcione otros datos que podemos necesitar, como por ejemplo comprobar si la dirección IP que teníamos ha cambiado… o establecer un periodo de tiempo (indicado en minutos) de modo que se quede en manos de la propia clase consultar de forma periódica cual es la dirección IP, notificando al objeto que hayamos registrado con la dirección que se está utilizando y si esta es la misma o bien ha cambiado.
He utilizado el patrón de diseño Singleton para simplificar aún más el uso de la clase, lo que significa que ni siquiera es preciso crear previamente una instancia de la misma para su uso. Después de todo, no tendría mucho sentido contar con varias instancias de esta misma funcionalidad.
Tanto la clase como el proyecto que la acompaña a modo de ejemplo de su funcionalidad están disponibles en este enlace del repositorio de GitHub; y si bien actualmente es aplicable a proyectos Desktop (Windows, macOS y Linux), está previsto añadir compatibilidad también con iOS.
s/HTTPSSocket/HTTPSecureSocket/
Thank you Tobias. This is ok in the GitHub project… and now corrected in the blog 😉
me aparece este error
An exception of class NilObjectException was not handled. The application must shut down.
en la linea :
Dim s as String = request.get(“https://api.ipify.org”,10)
ya cambie el tiempo por 100 y por 1000 y sigue el error
Muchas gracias
Hola,
Sólo he encontrado este tipo de problemas en IPify cuando la conexión a Internet se realiza a través de portales cautivos, doble NAT o configuraciones de acceso a Internet poco “usuales”. Lo modificaré en cuanto tenga algo de tiempo para que, por lo menos, no se produzca la excepción e informe al código que lo invoca de la imposibilidad de llegar a la API remota de un modo más elegante…