2010-06-02 11 views
7

Tengo problemas para obtener el código HTML de un sitio web mediante el uso de este código de ejemplo.Android httpclient - obtener un archivo con autenticación preventiva

http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client/ClientPreemptiveBasicAuthentication.java

Tengo que usar la de arriba, ya que necesito autenticación preventivo para mi aplicación en Android.

pensé que la solución podría ser el objeto HTTPGet, pero aún así obtener sólo los errores :( cf HttpGet HTTPGet = new HttpGet ("/ index.html");

¿Alguien tiene una idea de cómo llegar el contenido del archivo, que se especifica en el objeto HTTPGet anteriormente utilizando el código de ejemplo del vínculo. definitivamente llama, pero por ahora sólo puede obtener el código de estado y así sucesivamente ...

Gracias 4 ayuda

Respuesta

11

Alternativa 1: Lea Http Basic Authentication with Android que propone una solución basada en el HttpClient 4 official docs. No lo he probado solo, así que me gustaría saber si realmente funciona.

Editar: Lo he probado y funciona como un encanto.

Alternativa 2: También se pueden añadir la cabecera HTTP "Autorización" según lo propuesto por @CommonsWare:

post.addHeader("Authorization", "Basic " + Base64.encode(username+":"+password)); 

En este caso se necesita un codificador Base64 para codificar la cadena que contiene el nombre de usuario y la contraseña. Puede encontrar muchas implementaciones en Internet.

9

Para mí, el ejemplo anterior no funcionaba en Android. Tuve que hacer lo siguiente:

post.addHeader("Authorization", "Basic " + Base64.encodeToString((username+":"+password).getBytes(),Base64.NO_WRAP)); 
7

Gracias janex.

Tuve que hacer lo mismo en Android.

post.addHeader("Authorization", "Basic " + Base64.encodeToString((username+":"+password).getBytes(),Base64.NO_WRAP)); 

aplausos

+0

que estaba usando Base64.DEFAULT y se quedó con él para muuuucho tiempo! – advantej

+0

Increíble. Muchas gracias. ¡Funciona de maravilla! – wwjdm

+0

Además, ¿por qué debemos usar base64. ¿Es esto un estándar? – wwjdm

Cuestiones relacionadas