Вы расширяете класс Аутентификатор и регистрируете его. Javadocs по ссылке объясняют, как.
Я не знаю, работает ли это с методом nio, который получил принятый ответ на вопрос, но он наверняка работает по старомодному способу, который был ответом при этом.
В реализации класса authenticator вы, вероятно, собираетесь использовать PasswordAuthentication и переопределить метод getPasswordAuthentication () вашей реализации Authenticator, чтобы вернуть его. Это будет класс, которому передаются имя пользователя и пароль, которые вам нужны.
По вашему запросу вот пример кода:
public static final String USERNAME_KEY = "username";
public static final String PASSWORD_KEY = "password";
private final PasswordAuthentication authentication;
public MyAuthenticator(Properties properties) {
String userName = properties.getProperty(USERNAME_KEY);
String password = properties.getProperty(PASSWORD_KEY);
if (userName == null || password == null) {
authentication = null;
} else {
authentication = new PasswordAuthentication(userName, password.toCharArray());
}
}
protected PasswordAuthentication getPasswordAuthentication() {
return authentication;
}
И вы регистрируете его в основном методе (или где-то вдоль линии перед вызовом URL):
Authenticator.setDefault(new MyAuthenticator(properties));
Использование простое, но я нахожу API запутанным и отчасти задом наперед, как вы обычно думаете об этих вещах. Довольно типично для синглтон-дизайна.