2014-09-15 15 views
11

Sto lavorando a un progetto Android in cui sto pianificando di sostituire l'implementazione Apache httpclient con il client OKHTTP. Mi piacerebbe sapere come posso creare un client globale che possa essere utilizzato per richieste di networking in diverse attività e servizi che utilizzeranno il multi-threading del client. Devo creare un oggetto singleton di OKHTTPClient e riutilizzarlo nel mio codice?Android modo corretto per utilizzare OKKTTP singleton per le query parallele con i cookie

Inoltre, dove devo aggiungere il cookiestore alla richiesta, Nella definizione globale di client in modo che tutte le richieste abbiano cookie disponibili o durante la formulazione della richiesta in singole attività o servizi?

risposta

19

L'approccio generale all'utilizzo di OkHttp è un'istanza di OkHttp con un'istanza HttpResponseCache. Se deve essere creato come un singleton dipende dai requisiti della tua applicazione. Ad esempio, la singola istanza di OkHttp può essere creata in una sottoclasse di Application.onCreate() di Android, nel qual caso non è necessario essere un singleton se si rende la sottoclasse dell'app Android della classe Application singleton.

Citazione di loro wiki:

"La maggior parte delle applicazioni dovrebbero chiamare nuova OkHttp() esattamente una volta, configurarlo con la loro cache, e utilizzare la stessa istanza in tutto il mondo"

volta hai creato la tua istanza di OkHttp, puoi usare il loro metodo API setCookieHandler() per aggiungere un cookie persistente, che sarà usato in tutte le successive richieste HTTP. Vedi this SO answer per ulteriori dettagli sull'implementazione di un cookiestore che funzioni con OkHttp.

+2

Per completezza, il resto dei documenti: "Altrimenti le due istanze di cache si calpesteranno l'un l'altra, corrompono la cache di risposta e possibilmente bloccano il programma." – Mauker

+0

Cosa succede se non sono interessato al caching? – RScottCarson

Problemi correlati