4 Stimmen

warum wird getPasswordAuthentication() nicht aufgerufen?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;

import sun.net.www.protocol.http.AuthCacheImpl;
import sun.net.www.protocol.http.AuthCacheValue;

public class RunHttpSpnego {
  public static void main(String args[]) throws MalformedURLException,
      IOException {
    String urlString = "http://www.yahoo.com";
    String username = "XXXXXXXXX";
    String password = "XXXXXXXX";
     // This is modified after the question is being asked. Now this code works fine
     System.setProperty("http.proxyHost","176.x.xx.xx") ;
    System.setProperty("http.proxyPort", "8080") ;

    Authenticator.setDefault(new MyAuthenticator(username, password));

    URL url = new URL(urlString);
    InputStream content = (InputStream) url.getContent();
    BufferedReader in = new BufferedReader(new InputStreamReader(content));
    String line;
    while ((line = in.readLine()) != null) {
      System.out.println(line);
    }
    System.out.println("Done.");
  }

  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 Port  : " + getRequestingPort());
      System.out.println("Requesting Prompt : " + getRequestingPrompt());
      System.out.println("Requesting Protocol: "
          + getRequestingProtocol());
      System.out.println("Requesting Scheme : " + getRequestingScheme());
      System.out.println("Requesting Site  : " + getRequestingSite());
      return new PasswordAuthentication(username, password.toCharArray());
    }
  }
}

-- Was muss ich jetzt überprüfen, wird getPasswordAuthentication überhaupt nicht aufgerufen? Ich bin sicher, mein IE ist Authentifizierung aktiviert, aber nicht sicher, welche Art von Authentifizierung war es.

0voto

derptron Punkte 1

getPasswordAuthentication() wird nicht aufgerufen, da Authenticator erfolgreiche Authentifizierungsversuche zwischenspeichert und diesen Zwischenspeicher bei zukünftigen Anfragen verwendet, es sei denn, Sie rufen Authenticator.setDefault(null) um sie zu entfernen.

-2voto

Jaydeep Patel Punkte 2379

Verwenden Sie eine Url, die nach einem Login fragt. In Ihrem Fall können Sie yahoo url ändern in

https://login.yahoo.com/config/login_verify2?&.src=ym

-3voto

Scott Punkte 2033

Wenn getPasswordAuthentication() eine tatsächliche Methode ist und nicht nur Sie formulieren, was Sie brauchen, um zu geschehen, ist es eigentlich nicht derzeit eine Zeile in Ihrem Code überhaupt. Ich würde annehmen, dass Sie es nach dieser Zeile aufrufen wollen:

Authenticator.setDefault(new MyAuthenticator(username, password));

Ich sehe, dass sie erklärt, aber nie aufgerufen wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X