J'ai besoin de gratter le contenu derrière une page qui a une authentification de base http. En outre, le site a ssl. Ce que j'ai écrit jusqu'à présent:
Document document = Jsoup.connect("https://someuser:somepassword@somedomain.com").get();
Mais ça ne marche pas. Également essayé:
Document document = Jsoup
.connect("https://somedomain.com").get();
.header("Authorization", "Basic " + base64login)
.get();
Où base64login est:
private String title;
String username = "someuser";
String password = "somepass";
String login = username + ":" + password;
public String base64login = Base64.encodeToString(login.getBytes(), Base64.DEFAULT);
Je ne sais pas comment le faire fonctionner. Quelqu'un peut-il m'aider?
Réponses:
1 pour la réponse № 1Sans l'URL, c'est difficile à savoir, mais je suppose que votre encodage Charset par défaut ne correspond pas à ce que le serveur Web attend. Essayez peut-être ceci:
public String base64login = new String(
Base64.encodeBase64(login.getBytes(Charset.forName("utf-8")))
);
Cela utilise les méthodes org.apache.commons.codec.binary.Base64.
La connexion doit être effectuée comme vous l'avez essayé dans votre deuxième approche, c'est-à-dire avec le "Authorization"
entête. BTW - vous avez une erreur dans votre code. le header
la méthode doit être appelée avant get
et il n'y a pas de point-virgule après connect
.