2012-05-27 1 views
1

Дней тому назад я пытаюсь сделать приложение, похожее на No-IP DUC (Dynamic DNS Update Clients) в java, но я представил проблему, а не как исправить ... Теперь я могу восстановить домены я зарегистрированных в следующей строке кода:Обновление DNS с Java (похоже на DUC NO-IP). [Был: Actualizar DNS desde Java (похоже на DUC No-Ip)]

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

, но когда я обновляю с помощью следующего URL вы рекомендуете на странице http://www.no-ip.com/integrate/request, я получаю исключение ...

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

Странная вещь заключается в том, что вручную копировать URL-адрес в адрес, обновление выполняется ne без проблем ... Если кто-нибудь может мне помочь, я очень это ценю ...

+0

Почему вы положили название на португальский или испанский? – bacchus

+0

Пользователь/пароль в строке URL не работает для аутентификации в 'URLConnection'. Вам необходимо явно включить ** Базовая аутентификация **. См. Здесь: http://stackoverflow.com/questions/496651/connecting-to-remote-url-which-requires-authentication-using-java – Sandman4

+0

Большое спасибо за сотрудничество ... но я все еще сомневаюсь в связи. .. то есть, я делаю следующие шаги: http://www.javaworld.com/javatips/jw-javatip47.html, но для создания URL-адреса дает мне исключение. MalformedURLException: для строки ввода: «[email protected] ip.com "и не использовать ссылки для создания URL-адреса и задать мне имя пользователя и пароль, а также установить setRequestProperty (« Авторизация »,« Базовая »+ кодировка); – ju4n

ответ

1

Ну, я тоже столкнулся с этой ситуацией. Обнаружена причина этой ошибки в том, что мы используем адрес электронной почты для имени пользователя. «@», Присутствующий внутри него, конфликтует с результирующим URL-адресом. Попробуйте использовать URLEncode для кодирования имени пользователя и пароля.

String username = URLEncoder.encode("[email protected]", "UTF-8"); 
String password = URLEncoder.encode("password", "UTF-8"); 
URL url = new URL("http://"+username+":"+password+"@dynupdate.no-ip.com/nic/update?hostname="+hostname+"&myip="+ip);   
URLConnection urlConnection = url.openConnection(); 
+0

Это может быть лучше, чем комментарий. – JSuar

+1

Новые пользователи не имеют возможности комментировать. Я попытался сделать это как ответ с соответствующими примерами кода. – Konoha