Attualmente sto usando un DefaultHttpClient con ThreadSafeClientConnManager. Funziona bene, ma mi piacerebbe sostituirlo usando AndroidHttpClient. Purtroppo non sono in grado di aggiungere UsernamePasswordCredentials che al momento è importante per me. Qualcuno può fornire un consiglio o una soluzione?Come utilizzare AndroidHttpClient (livello API 8) e UsernamePasswordCredentials?
5
A
risposta
0
È necessario utilizzare la classe HttpRequestInterceptor
per l'autenticazione.
Ecco un esempio
HttpRequestInterceptor httpRequestInterceptor = new HttpRequestInterceptor() {
public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException {
AuthState authState = (AuthState) context.getAttribute(ClientContext.TARGET_AUTH_STATE);
CredentialsProvider credsProvider = (CredentialsProvider) context.getAttribute(
ClientContext.CREDS_PROVIDER);
HttpHost targetHost = (HttpHost) context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);
if (authState.getAuthScheme() == null) {
AuthScope authScope = new AuthScope(targetHost.getHostName(), targetHost.getPort());
Credentials creds = credsProvider.getCredentials(authScope);
if (creds != null) {
authState.setAuthScheme(new BasicScheme());
authState.setCredentials(creds);
}
}
}
};
0
So che la domanda è vecchia, ma a beneficio di chiunque inciampare su questo (come ho fatto io), è possibile ripristinare l'intestazione te stesso con HttpGet
oggetto. In questo modo:
httpGet.addHeader("Authorization", "Basic " + Base64.encode(username+":"+password));
+0
Il metodo codifica (byte [], int) nel tipo Base64 non è applicabile per gli argomenti (String) .. –
0
Alcuni miglioramento per la risposta di Saad Farooq, il seguente codice funziona per me.
final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
getRequest = new HttpGet(url);
getRequest.addHeader("Authorization", "Basic " + Base64.encodeToString(new
String(username + ":" + password).getBytes(), Base64.NO_WRAP));
Problemi correlati
- 1. Leak trovato: AndroidHttpClient creato e mai chiusa
- 2. AndroidHttpClient NullPointerException chiamando android.net.http.AndroidHttpClient.isMmsRequest
- 3. Protocolli SSL/TLS e suite di crittografia con AndroidHttpClient
- 4. Come utilizzare creare e utilizzare un UIImageAsset in iOS 8
- 5. API Java 8 Collectors
- 6. Utilizzando Loader API 8
- 7. Java 8 lambda api
- 8. Come utilizzare ActionCable come API
- 9. Windows Phone 8 - API private?
- 10. Criteri JPA2 e Java 8 Data e ora API
- 11. Funzioni ANSI API di Windows e UTF-8
- 12. Ruota visualizzazione annuncio con API 8
- 13. Come rendere android: background = "? Android: attr/selectableItemBackground funziona a livello di API 8
- 14. Android: API richiesta per utilizzare Switch?
- 15. AndroidHttpClient non trovato (durante l'esecuzione di Robolectric)
- 16. Come utilizzare le API Fandango?
- 17. Come installare, compilare e utilizzare Rebar in Windows 8
- 18. Java 8 funziona su Android API 24 e versioni successive Oppure è possibile utilizzare in api inferiori?
- 19. buona pratica: API REST come interfaccia tra il livello di interfaccia e il livello aziendale?
- 20. livello di Android API <19 e "provare può utilizzare la gestione automatica delle risorse" avvertimento
- 21. Come creare e utilizzare UIcollectionView a livello di codice?
- 22. Come utilizzare EventTrigger e InvokeCommandAction al livello di programmazione?
- 23. Come eseguire solo codice a certo livello di API
- 24. API Java 8 Stream in Android N
- 25. Windows 8 vocale a testo e sintesi vocale API
- 26. Java 8 stream API: filtro su istanza, e gettato
- 27. Equivalente all'intervallo jodatime in Java 8 API Data e ora
- 28. Android - Uso di view.setX() e setY in api 8
- 29. Google map API in Windows Phone 8
- 30. Che cosa significa livello API?
Si apre una nuova domanda: Come aggiungere l'intercettatore a AndroidHttpClient? – lichtzeichenanlage
Puoi per favore farmi sapere perché stai cercando di utilizzare 'AndroidHttpClient'? –
Ehi, Tammay. Da un lato il codice mi sembra più pulito, d'altra parte cerco di usare classi standard invece di scrivere e mantenere il mio una volta. Queste ragioni sono valide? – lichtzeichenanlage