更新:この質問とその回答は、これを読んでいる人にはお勧めできません。 AndroidはHttpClient(読み取り:非推奨)を推奨せず、代わりにHttpUrlConnectionを推奨しています 。現在使用するライブラリの良い例は、 Retrofit と OkHttp です。この質問のコンテキストでは、Cookieを保存、保存し、後続のクエリで配信できます。これは透過的に処理されません。 OkHttpではインターセプターを使用できます 。
Androidアプリケーションに複数のインテントがあります。
最初のインテントはログインフォームで、以降のインテントはログインプロセスから提供されるCookieに依存しています。
私が抱えている問題は、Cookieがインテント間で永続化されていないように見えることです。私は各インテントで新しいHttpClientを作成しています(最初はParcelableで各インテントに送信しようとしましたが、うまく機能しませんでした)。
Cookieをインテント間で持続させるためのヒントはありますか?
@Emmanuelが提案したことを実行するか、作成中のHttpClient間で BasicHttpContext を渡すことができます。
コンテキストとCookieの使用例 ここに完全なコード
HttpClient httpclient = new DefaultHttpClient();
// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Create local HTTP context
HttpContext localContext = new BasicHttpContext();
// Bind custom cookie store to the local context
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpGet httpget = new HttpGet("http://www.google.com/", localContext);
新しいHttpClientを作成しないでください。これでCookieがクリアされます。単一のHttpClientを再利用します。
HttpClientをシングルトンクラスにします。
applicationクラスでHttpClientを定義し、アクティビティで使用します。
アプリケーションで
public class AAA extends Application {
public HttpClient httpClient;
httpClient = new DefaultHttpClient();
活動中
AAA aaa = (AAA)getApplication();
httpClient = app.httpClient;