Question

Je vérifie la org.apache.http.auth de classe. Plus référence ou par exemple si quelqu'un a?

Était-ce utile?

La solution

Je n'ai pas rencontré ce paquet particulier avant, mais il dit qu'il est pour l'authentification HTTP côté client, que je suis capable de faire sur Android en utilisant les API java.net, comme ceci:

Authenticator.setDefault(new Authenticator(){
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("myuser","mypass".toCharArray());
    }});
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
c.setUseCaches(false);
c.connect();

Il est évident que votre getPasswordAuthentication () devrait probablement faire quelque chose de plus intelligent que le retour d'une constante.

Si vous essayez de faire une demande avec un corps (par exemple POST) avec authentification, méfiez-vous de Android question 4326. J'ai lié une solution proposée à la plate-forme là-bas, mais il y a une solution simple si vous ne souhaitez auth de base: ne vous embêtez pas avec Authenticator, et au lieu faire ceci:

c.setRequestProperty("Authorization", "basic " +
        Base64.encode("myuser:mypass".getBytes(), Base64.NO_WRAP));

Autres conseils

Pour moi, il a travaillé,

final String basicAuth = "Basic " + Base64.encodeToString("user:password".getBytes(), Base64.NO_WRAP);

Apache HttpClient:

request.setHeader("Authorization", basicAuth);

HttpURLConnection:

connection.setRequestProperty ("Authorization", basicAuth);

Vous pouvez insérer manuellement http tête à la demande:

HttpGet request = new HttpGet(...);
request.setHeader("Authorization", "Basic "+Base64.encodeBytes("login:password".getBytes()));

Méthode manuelle fonctionne bien avec android.util.Base64 à l'importation, mais assurez-vous de mettre Base64.NO_WRAP à appeler encode:

String basicAuth = "Basic " + new String(Base64.encode("user:pass".getBytes(),Base64.NO_WRAP ));
connection.setRequestProperty ("Authorization", basicAuth);

Pour mes projets Android J'ai utilisé la bibliothèque base64 d'ici:

http://iharder.net/base64

Il est une bibliothèque très vaste et jusqu'à présent, je l'ai eu aucun problème avec elle.

Cela fonctionne pour moi

 URL imageUrl = new URL(url);
                    HttpURLConnection conn = (HttpURLConnection) imageUrl
                            .openConnection();
                    conn.setRequestProperty("Authorization", "basic " +
                            Base64.encode("username:password".getBytes()));
                    conn.setConnectTimeout(30000);
                    conn.setReadTimeout(30000);
                    conn.setInstanceFollowRedirects(true);
                    InputStream is = conn.getInputStream();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top