Domanda

Sto controllando la classe org.apache.http.auth. Qualche altro riferimento o esempio se qualcuno ha?

È stato utile?

Soluzione

Non ho mai incontrato quel particolare pacchetto prima, ma dice che è per l'autenticazione HTTP lato client, che sono stato in grado di fare su Android usando il java.net API, come così:

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();

Ovviamente la tua GetPasswordAuthentication () dovrebbe probabilmente fare qualcosa di più intelligente che restituire una costante.

Se stai cercando di fare una richiesta con un corpo (ad es. POST) con autenticazione, attenzione a Numero Android 4326. Ho collegato una soluzione suggerita alla piattaforma lì, ma c'è una semplice soluzione se vuoi solo l'autenticazione di base: non preoccuparti di autenticatore e invece lo fai:

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

Altri suggerimenti

Per me, ha funzionato

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

Apache httpclient:

request.setHeader("Authorization", basicAuth);

Httpurlconnection:

connection.setRequestProperty ("Authorization", basicAuth);

È possibile inserire manualmente l'intestazione HTTP per richiedere:

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

Il metodo manuale funziona bene con import android.util.base64, ma assicurati di impostare base64.no_wrap sulla chiamata ENCODE:

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

For my Android projects I've used the Base64 library from here:

http://iharder.net/base64

It's a very extensive library and so far I've had no problems with it.

This works for me

 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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top