2010-06-02 13 views
7

Ho riscontrato problemi con il codice HTML di un sito Web utilizzando questo codice di esempio.HTTP httpclient: recupero di un file con autenticazione preventiva

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

devo usare quello superiore, come ho bisogno di autenticazione preventiva per la mia applicazione in Android.

ho pensato che la soluzione potrebbe essere l'oggetto httpget, ma ho ancora ottenere solo errori :( cf HttpGet httpget = new HttpGet ("/ index.html");

Qualcuno ha un'idea di come ottenere il contenuto del file, che è specificato nell'oggetto httpget sopra utilizzando il codice di esempio del collegamento. e 'sicuramente chiamato, ma per ora posso solo ottenere il codice di stato e così via ...

Grazie 4 aiuto

risposta

11

Alternativa 1: Leggere Http Basic Authentication with Android che propone una soluzione basata su HttpClient 4 official docs. Non l'ho provato da solo, quindi sarei felice di sapere se funziona davvero.

Modifica: Ho appena provato e funziona come un fascino.

Alternativa 2: È inoltre possibile aggiungere l'intestazione HTTP "autorizzazione", come proposto dalla @CommonsWare:

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

In questo caso è necessario un encoder Base64 per codificare la stringa contenente il nome utente e la parola d'ordine. Puoi trovare molte implementazioni in Internet.

9

Per me l'esempio sopra non ha funzionato su Android. Ho dovuto fare quanto segue:

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

Grazie janex.

Ho dovuto fare lo stesso su Android.

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

applausi

+0

stavo usando Base64.DEFAULT ed è stato attaccato con esso per tempo luuungo! – advantej

+0

Incredibile. Grazie mille. Funziona come un fascino! – wwjdm

+0

Inoltre, perché dobbiamo usare base64. È uno standard? – wwjdm

Problemi correlati