La versione del client HTTP Apache fornita su Android di magazzino era very very old.
Google Android 1.0 è stato rilasciato con un'istantanea pre-BETA di Apache HttpClient. In concomitanza con la prima versione di Android, le API Apache HttpClient 4.0 dovevano essere congelate prematuramente, mentre molte delle interfacce e delle strutture interne non erano ancora completamente elaborate. Con la scadenza di Apache HttpClient 4.0, il progetto si aspettava che Google incorporasse gli ultimi miglioramenti del codice nella loro struttura del codice. Sfortunatamente non è successo.
Se non si desidera passare a una nuova API è possibile aggiungere manualmente una versione più recente della libreria Apache HttpClient nel progetto per sostituire la vecchia versione obsoleta in Android SDK < 22.
Il modo più semplice per eseguire questa operazione quando si seleziona l'SDK 23+ consiste nell'utilizzare il nuovo Apache HttpClient package for Android di Marek Sebera (come suggested by Apache), che potrebbe potenzialmente funzionare come una sostituzione drop-in. Basta aggiungere la seguente dipendenza al file build.gradle (l'aggiornamento del numero di versione, se del caso):
compile "cz.msebera.android:httpclient:4.4.1.1"
e sostituirlo con import org.apache.http.*
import cz.msebera.android.httpclient.*
ovunque nel progetto.
Si noti che molte classi della vecchia libreria sono deprecate (ad esempio HttpParams
,), quindi riscrivere il codice sarà probabilmente una soluzione migliore.
Edit: Ho trovato alcuni casi in cui gli utenti sono stati ottenendo eccezioni timeout quando dietro server proxy dopo abbiamo aggiornato al client HTTP più recente. Poiché il codice è pieno di avvertimenti obsoleti ovunque, abbiamo deciso che non valeva la pena tentare di risolvere il problema. Raccomando di testare molto accuratamente prima di provare a metterlo in produzione.
Come accennato in altre risposte, una soluzione molto migliore è quello di stringere i denti e passare a uno il nativo Android HttpUrlConnection
, o se questo non soddisfa le vostre esigenze, è possibile utilizzare la libreria OkHttp
, che è ciò che HttpUrlConnection
è internally based upon anyway.
fonte
2015-09-27 05:56:25
Non è un errore. È un avvertimento Dovresti leggere la documentazione. Ci deve essere un suggerimento su quale classe si dovrebbe usare – Jens
ci sono 4 suggerimenti: – Sml
opzioni 'Approvazione dell'uso dell'API': modifica l'impostazione del profilo di ispezione e Annotazione della classe 'HttpEntity' come @Deprecated: modifica delle impostazioni dell'intenzione. quali opzioni dovrei andare per ?? non ho davvero idea di cosa significano – Sml