Pregunta

Estoy revisando la clase org.apache.http.auth. ¿Más referencia o ejemplo si alguien tiene?

¿Fue útil?

Solución

No he cumplido ese paquete en particular antes, pero dice que es para la autenticación HTTP del lado del cliente, que he podido hacer en Android usando el java.net API, como así:

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

Obviamente, su getPasswordAuthentication () probablemente debería hacer algo más inteligente que devolver una constante.

Si está tratando de hacer una solicitud con un cuerpo (por ejemplo, POST) Con autenticación, tenga cuidado con Android Problema 4326. He vinculado una solución sugerida a la plataforma allí, pero hay una solución simple si solo desea una autenticación básica: no se moleste con el autenticador y, en su lugar, haga esto:

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

Otros consejos

Para mi funcionó

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

Apache httpclient:

request.setHeader("Authorization", basicAuth);

Httpurlconnection:

connection.setRequestProperty ("Authorization", basicAuth);

Puede insertar manualmente el encabezado HTTP para solicitar:

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

El método manual funciona bien con importar android.util.base64, pero asegúrese de configurar base64.no_wrap en la llamada de llamadas:

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

Para mis proyectos de Android, he usado la biblioteca Base64 de aquí:

http://iharder.net/base64

Es una biblioteca muy extensa y hasta ahora no he tenido problemas con ella.

Esto funciona para mi

 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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top