Мне было интересно, знает ли кто-нибудь из вас, как выйти из системы базовой аутентификации (BA) с помощью класса java.net.Authenticator. Я знаю, что у BA нет метода выхода из системы, и что вам нужно закрыть и снова открыть браузер, чтобы завершить сеанс. Вопрос в том, как «закрыть и снова открыть браузер» в коде Java? То есть я подключаюсь через java, а не через браузер, так как мне заставить JVM «деаутентифицировать» себя?
Контекст: я пишу приложение для публикации твитов на нескольких аккаунтах в Твиттере, используя BA. Я могу использовать java.net. *, Чтобы опубликовать твит для одной учетной записи (и вижу, что он вызывает мой класс аутентификатора), но когда я пытаюсь опубликовать твит для второй, я не вижу второго вызова аутентификатора. и твит получен с первого аккаунта.
Можно ли заставить Аутентификатор пройти повторную аутентификацию, или это тупик? Если так, я могу просто использовать вместо этого OAuth.
Большое спасибо заранее за любые идеи, которые вы можете предложить!
Шейн
static class MyAuthenticator extends Authenticator {
private String username, password;
public MyAuthenticator(String user, String pass) {
username = user;
password = pass;
}
protected PasswordAuthentication getPasswordAuthentication() {
System.out.println("Requesting Host : " + getRequestingHost());
System.out.println("Requesting Scheme : " + getRequestingScheme());
System.out.println("Requesting Site : " + getRequestingSite());
return new PasswordAuthentication(username, password.toCharArray());
}
}
общедоступный твит (AutoTwitterAccount acc, String твит) {
Authenticator.setDefault (нуль);
Authenticator.setDefault(new MyAuthenticator(acc.getUserName(), acc.getPassword()));
try {
/* First login the session and fire off tweet*/
URL url = new URL(AutoTweeter.TWEET_URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("User-Agent", "Mozilla/4.0");
conn.setRequestProperty("User-Agent", AGENT);
conn.setRequestProperty("Content-Type", TYPE);
conn.setRequestProperty("Content-Length", "" + tweet.length());
...fire off tweet....
conn.disconnect();
Еще раз спасибо!