httpclient のデフォルトの Cookie 処理を無効/無視するにはどうすればよいですか。手動でやりたい。すべての http リクエストに対して事前定義された Cookie ヘッダーを設定したいと考えています。
4 に答える
最新の httpclient (4.5.1)には と呼ばれるメソッドが"disableCookieManagement"
あり、これは内部の Cookie 管理を無効にするだけで、Cookie を送受信する機能ではなく、私のために働いているようです-
httpclient.setCookieStore(cookieStore);
実行する前に設定しますHttpClient
リクエストを実行する前に HttpContext を強制的にセットアップします。
private HttpClientContext httpContext = new HttpClientContext();
httpContext.setCookieStore(new BasicCookieStore());
setCookieStore は、空の Cookie ストアを作成して、http 接続のデフォルトの Cookie ストアを置き換えます。
その後、http メソッドを実行できます。
org.apache.http.client.HttpClient.execute(HttpUriRequest, HttpContext)
また、Cookie ストアを再利用して ( を保持BasicCookieStore
)、接続を維持することもできます。
Android で DefaultHttpClient による Cookie 処理を無効化/無視する方法を見つけることができませんでした (Android のソース コードをもっと調べる必要がありましたが、時間制限があります)。しかし、このように httpClient.execute() を実行する前にすべてのCookieを削除することで解決しました-
((AbstractHttpClient) myDefaultHttpClient).getCookieStore().clear();
これにより、defaultHttpClient によって保存されたすべての Cookie が削除され、次を使用して手動で Cookie を処理 (追加/削除) できます。
myHttpPost.setHeader("Cookie", myCookie);
それが役に立てば幸い。