Come utilizzare HttpClient con le operazioni di multithread?

Devo fare un’applicazione che esegue un Login POST di richiesta in un determinato host, quindi, si passa alcune pagine, trova e recupera alcuni dati.
Questo perché il sito web resource è protetto dalla sessione, quindi devo effettuare il login sul sito web prima riesco a fare qualche operazione come get o post di alcuni dati.
La mia domanda è perché HttpClient non è thread-safe, come posso creare un solo HttpClient istanza, ma i thread possono eseguire su di esso in modo sicuro?
Ricordate che la connessione sottostante è necessario effettuare il login prima di poter essere utilizzato per operare.

InformationsquelleAutor wangyin | 2011-03-28

 

2 Replies
  1. 2

    Si può fare HttpClient thread-safe, specificando thread safe client manager.

    API : http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html

    http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/DefaultHttpClient.html#DefaultHttpClient%28org.apache.http.conn.ClientConnectionManager%29

    Esempio : http://thinkandroid.wordpress.com/2009/12/31/creating-an-http-client-example/

    • sì, posso. per quanto ne so, l’unico collegamento è utilizzato da HttpClient. Se io uso ThreadSafeClientConnManager, può tenere la mia prima sessione di login?
    • Sì, stato indipendente di connessione. E. g. se richiesta 1 imposta un cookie, si sarà visibile a richiesta 2 (per lo stesso dominio) con Thread-Safe Conn mangiatoia come bene.
    • OK,Grazie molto letame!Proverò di nuovo.
    • Tenete a mente che ThreadSafeClientConnManager è deprecata dalla versione 4.2 Uso PoolingClientConnectionManager, invece.
    • Vedere stackoverflow.com/a/14762579/923560 per un esempio su come impostare un PoolingClientConnectionManager versione 4.2

Lascia un commento