Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Actualizar DNS de no-ip.org con Java

Buenas....

Hace dias trato de hacer una aplicacion similar a DUC No-Ip (Dynamic DNS Update Clients) en java pero se me ha presentado un inconveniente y no tengo ni idea de como seguir...
Actualmente puedo recuperar de la web los dominios que tengo registrados con la siguiente linea de codigo

URLConnection conexion = new URL( "http://dynupdate.no-ip.com/list-hosts.php?email="+USER+"&pass="+PASSWORD ).openConnection();

pero cuando quiero actualizarlos con la siguiente URL que recomiendan en la pagina http://www.no-ip.com/integrate/request, me da una excepcion...

URLConnection conexion = new URL( "http://"+USER+":"+PASSWORD+"@dynupdate.no-ip.com/nic/update?hostname="+DOMAIN+"&myip="+IP ).openConnection();

Lo raro es que al copiar manualmente la URL en la direccion, la actualizacion se hace sin problema...
Si alguien me puede colaborar se lo agradezco muchisimo...

mayo 27, 2012 | Registered Commenterju4n

¿Cuál es la excepción?

mayo 27, 2012 | Registered Commenterchoces

La excepcion es...IOException
El mensaje es...For input string: "PASSWORD@dynupdate.no-ip.com"

Gracias por la atencion...

mayo 27, 2012 | Registered Commenterju4n

Me refería al stacktrace completo de la excepción, donde indica las clases y las líneas desde donde se lanza.

mayo 27, 2012 | Registered Commenterchoces

java.net.MalformedURLException: For input string: "PASSWORD@dynupdate.no-ip.com"
at java.net.URL.(URL.java:617)
at java.net.URL.(URL.java:480)
at java.net.URL.(URL.java:429)
at Service.updateDNS(Service.java:61)
at Service.main(Service.java:96)
Caused by: java.lang.NumberFormatException: For input string: "4n0n1m0u5@dynupdate.no-ip.com"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:481)
at java.lang.Integer.parseInt(Integer.java:514)
at java.net.URLStreamHandler.parseURL(URLStreamHandler.java:217)
at java.net.URL.(URL.java:612)
... 4 more

mayo 28, 2012 | Registered Commenterju4n

Estaría bien que escribieras sobre la llamada a:
URLConnection conexion = new URL( "http://"+USER+":"+PASSWORD+"@dynupdate.no-ip.com/nic/update?hostname="+DOMAIN+"&myip="+IP ).openConnection();

System.out.println("http://"+USER+":"+PASSWORD+"@dynupdate.no-ip.com/nic/update?hostname="+DOMAIN+"&myip="+IP) más que nada porqué por el stack trace parece que no coge bien la url. Así veríamos si la variable USER contiene lo que se supone que debe contener, el usuario i si genera bien la url.

Se que parece una tontería pero no seria la primera vez que pasa!

mayo 28, 2012 | Registered Commenterjordibr7

¿Cómo está declarada la variable PASSWORD?

mayo 28, 2012 | Registered Commenterchoces

mmm precisamente creo que el problema es al crear la url...en otro foro me han contestado esto y creo que es por hay, pero aun sigo con problemas..

"user/pass in the URL string does not work for authentication in URLConnection. You need to explicitly enable Basic Authentication."

segun esto, tendria que utilizar algo como lo que describen en esta pagina http://www.javaworld.com/javatips/jw-javatip47.html

la cuestion es que esto funciona si creo una url y al abrirla esta pide el usuario y contraseña y lo siguiente seria hacer setRequestProperty ("Authorization", "Basic" + encoding) para autenticarme....

pero la forma como debo actualizar la ip del dominio no me permite hacer esto, es decir, toda la cadena debe llevar la informacion (user, password, domain, ip)

Tambien trate codificando la contraseña a BASE64 y no da....

este es el codigo completo del servicio que quiero implementar...si alguien me puede colaborar, se lo agradeceria mucho...http://pastebin.com/cCveDazS

mayo 29, 2012 | Registered Commenterju4n

Creo que el problema es debido a que al poner http://nombre@mail.com:pass@maildyn... da error, prueba cambiando por: http://nombre%40mail.com:pass@maildyn i cuéntanos el que!

mayo 31, 2012 | Registered Commenterjordibr7

No he podido entender por qué casi todos los días haya que actualizar java? Es que siempre hay problemas con el programa? o es que necesitan acondicionarlo a cada programa que sale al mercado? y cada cuanto se debe realmente aceptar la actualización sin que me dé conflictos en mi pc.

junio 18, 2012 | Unregistered Commenterblacho

JavaSE no es un producto estático, que una vez hecho está hecho para siempre.
Aparte de las novedades en las especificaciones del lenguaje, siempre aparecen bugs, mejoras, o soluciones a problemas de seguridad, que se resuelven en las actualizaciones.

En los últimos 10 meses ha habido 5 actualizaciones de JavaSE 1.7, lo que tratándose de una versión que implementa novedades en el propio lenguaje, no me parece una exageración.

junio 18, 2012 | Registered Commenterchoces

gracias a todos los que me trataron de colaborar con el tema...logre solucionarlo reemplazando dos lineas de codigo por 4 que me dan en esta respuesta...
http://stackoverflow.com/questions/496651/connecting-to-remote-url-which-requires-authentication-using-java

junio 20, 2012 | Registered Commenterju4n

No veo la relación entre la respuesta de Stackoverflow, y la excepción que mencionas en tus mensajes anteriores.

java.net.MalformedURLException: For input string: "PASSWORD@dynupdate.no-ip.com"
Caused by: java.lang.NumberFormatException: For input string: "4n0n1m0u5@dynupdate.no-ip.com"

junio 20, 2012 | Registered Commenterchoces

El problema estaba en la forma como implementaba la autenticacion...Al crear la URL con usuario y password no tenia una respuesta satisfactoria de la web...pero al realizar la autenticacion por aparte, se soluciono el problema...

Basicamente asi quedo el metodo que actualiza los dominio (Que era el del problema).
http://pastebin.com/FmhC8WRz

junio 20, 2012 | Registered Commenterju4n