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());
}
}
}
- Que vérifie-t-on maintenant, getPasswordAuthentication n'est pas du tout appelé? Je suis sûr que mon IE est activé, mais je ne sais pas quel type d'authentification était.pourquoi getPasswordAuthentication() n'est pas appelé?
Etes-vous sûr que le serveur vous demande un mot de passe? Ce type de service ne fonctionne que pour les mots de passe HTTP, pas les mots de passe dans un formulaire Web. –
Vous pouvez vérifier les en-têtes et savoir quel est le type d'authentification. – NullUserException
Oui, c'est le mot de passe d'entrée pour IE. Le serveur attend des mots de passe chaque fois que je visiste internet, donc je dois entrer le nom d'utilisateur et mot de passe pour se connecter à Internet dans Internet Explorer – srinannapa